Re: can't set sequence - Mailing list pgsql-novice

From Keith Worthington
Subject Re: can't set sequence
Date
Msg-id 41BBB656.7060907@NarrowPathInc.com
Whole thread Raw
In response to Re: can't set sequence  (Michael Fuhr <mike@fuhr.org>)
Responses Re: can't set sequence
List pgsql-novice
Michael Fuhr wrote:

>On Fri, Dec 10, 2004 at 03:47:19PM -0500, Keith Worthington wrote:
>
>
>
>>In our database we have a table as described below.  When we attempt to write
>>to the table from our visual basic program we receive an error.  "ERROR:
>>tbl_receiving_receipt_number_seq.nextval:  You don't have permissions to set
>>sequence tbl_receiving_receipt_number_seq"  Can someone please explain how to
>>correct this error?  TIA
>>
>>
>
>You've granted permission on the table but not on the implicit
>sequence used for the SERIAL column.  Granting SELECT on a sequence
>allows users to call currval(); granting UPDATE allows calls to
>nextval(), which is what inserts do when setting a field to its
>default value.  Try this:
>
>GRANT SELECT, UPDATE
>  ON purchase_order.tbl_receiving_receipt_number_seq TO public;
>
>Grant to someone other than "public" if you want to be more
>restrictive.
>
>
>
>>GRANT ALL ON TABLE purchase_order.tbl_receiving TO public;
>>GRANT ALL ON TABLE purchase_order.tbl_receiving TO postgres;
>>GRANT UPDATE, INSERT ON TABLE purchase_order.tbl_receiving TO GROUP loaders;
>>
>>
>
>Unless I'm overlooking something you don't need all these grants.
>First you say "grant everything to everybody," then you say "grant
>everything to postgres."  The second grant is unnecessary, maybe
>doubly so: the first grant already covers everybody, and if postgres
>is a database superuser then it has the power to do anything it
>wants anyway.  The third grant also appears unnecessary since the
>first grant covers everybody.  Have experiments shown all these
>grants to be necessary?  If so, what version of PostgreSQL are you
>using?
>
Michael,

Exactly what I needed.  Thank you.  I didn't realize that a sequence
carried a set of permissions separate from that of the column/table to
which it was attached.

Regarding the GRANTS.  The first two were created by pgadmin3 when I
granted all to public in an attempt to work out this issue.  The third
is a mistake.  I expect the permissions will really look like this now
that the sequence issue has been worked out.

GRANT UPDATE, INSERT ON TABLE purchase_order.tbl_receiving TO public;
GRANT ALL ON TABLE purchase_order.tbl_receiving TO postgres;

BTW the 'normal' set of permissions looks something like this.

GRANT SELECT ON TABLE my_schema.tbl_example TO public;
GRANT ALL ON TABLE my_schema.tbl_example TO postgres;
GRANT UPDATE, INSERT ON TABLE my_schema.tbl_example TO GROUP loaders;

--
Kind Regards,
Keith


pgsql-novice by date:

Previous
From: Michael Fuhr
Date:
Subject: Re: check if column is NULL (php)
Next
From: Michael Fuhr
Date:
Subject: Re: can't set sequence