Re: What is wrong here? - Mailing list pgsql-general
From | Stijn Vanroye |
---|---|
Subject | Re: What is wrong here? |
Date | |
Msg-id | 71E201BE5E881C46811BA160694C5FCB04672C@fs1000.farcourier.com Whole thread Raw |
In response to | What is wrong here? ("Tumurbaatar S." <tumurbaatar@datacom.mn>) |
Responses |
Re: What is wrong here?
|
List | pgsql-general |
I don't think so. I don't see why there should be a difference in executing an insert statement direct, or trought a function.You would still be simply executing an insert on a table, wich implies that the user has to have sufficient rightson that table. Should anyone think I'm wrong (I'm still more or less a newbie with PostGres), please speak up. Regards, Stijn Vanroye > -----Original Message----- > From: Tumurbaatar S. [mailto:tumurbaatar@datacom.mn] > Sent: donderdag 22 april 2004 12:32 > To: Stijn Vanroye > Subject: Re: [GENERAL] What is wrong here? > > > Yes, the user doesn't have INSERT right on this table. > Because I planned to force users to use the function > instead of direct INSERT. So it is not possible? > > > ----- Original Message ----- > From: "Stijn Vanroye" <s.vanroye@farcourier.com> > To: "Tumurbaatar S." <tumurbaatar@datacom.mn>; > <pgsql-general@postgresql.org> > Sent: Thursday, April 22, 2004 19:08 > Subject: RE: [GENERAL] What is wrong here? > > > My guess is that the user has no (insert) rights on the table > Customers. > Try something like this for your table: > GRANT [your options] ON TABLE Customers TO SomeCustomer; (or > to everyone if > that's easyer) > where your options best includes SELECT and INSERT > > Regards, > > Stijn Vanroye > > > > The following function returns this error: > > > > pg_query(): Query failed: ERROR: permission denied for > > relation customers > > CONTEXT: PL/pgSQL function "newprofile" line 8 at SQL statement > > > > What is wrong here? > > > > > > CREATE SEQUENCE CustomerID; > > CREATE TABLE Customers > > ( > > CustomerID INTEGER NOT NULL DEFAULT nextval('CustomerID'), > > IsActive BOOLEAN NOT NULL DEFAULT TRUE, > > Email VARCHAR(64) NOT NULL CHECK (Email = substring(Email from > > '^.+@.+\..+$')), > > Password VARCHAR(15) NOT NULL CHECK (Password = > > substring(Password from > > '^[0-9_A-Za-z]{5,15}$')), > > FullName VARCHAR(50) NOT NULL, > > Address VARCHAR(100) NOT NULL, > > Phone VARCHAR(15) NOT NULL, > > Created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, > > Accessed TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, > > > > PRIMARY KEY (CustomerID), > > UNIQUE (Email) > > ); > > > > CREATE FUNCTION NewProfile(VARCHAR, VARCHAR, VARCHAR, > > VARCHAR, VARCHAR) > > RETURNS INTEGER AS ' > > DECLARE > > aEmail ALIAS FOR $1; > > aPassword ALIAS FOR $2; > > aName ALIAS FOR $3; > > aAddr ALIAS FOR $4; > > aPhone ALIAS FOR $5; > > BEGIN > > INSERT INTO Customers(Email, Password, FullName, Address, Phone) > > VALUES(lower(aEmail), aPassword, aName, aAddr, aPhone); > > RETURN currval(''CustomerID''); > > END; > > ' LANGUAGE plpgsql; > > > > GRANT EXECUTE ON FUNCTION NewProfile(VARCHAR, VARCHAR, > > VARCHAR, VARCHAR, > > VARCHAR) TO SomeCustomer; > > > > > > ---------------------------(end of > > broadcast)--------------------------- > > TIP 5: Have you checked our extensive FAQ? > > > > http://www.postgresql.org/docs/faqs/FAQ.html > > > >
pgsql-general by date: