Search Postgresql Archives

Re: 'Identifier' columns

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



David Favro wrote:
> A couple of questions about auto-assigned identifier columns, 
> forgive my ignorance, I'm used to other methods to create IDs...
> 
> 1. If creating a new application [i.e. no "legacy" reasons to do 
> anything] using PostgreSQL 10, when creating an "auto-assigned 
> integer ID" column, what are the advantages/disadvantages of using 
> the 'SERIAL' datatype [or equivalent explicitly created SEQUENCE w/ 
> nextval() used as default for column] versus the SQL-standard 
> 'integer GENERATED AS IDENTITY'?  All other things being equal, it 
> would seem a no-brainer to follow the standard.

Absolutely.
Use GENERATED ALWAYS AS IDENTITY.

> 2. When using the SQL-standard 'integer GENERATED AS IDENTITY' 
> column, after inserting a column, what is the recommended method to 
> find the ID of the just-inserted row?  Is there no SQL-standard way?  
> The docs seem to imply (without explicitly stating) that a SEQUENCE 
> is used behind the scenes hence 'currval()' could be used, but I 
> didn't see in the docs any mention of what the underlying sequence's 
> name is, or how to specify a name.  Perhaps 'lastval()' would work, 
> but not in all cases and in any event it has a sloppy feel to me.

The best way is to use the (non-standard) RETURNING clause:

INSERT ... RETURNING id;

Yours,
Laurenz Albe
-- 
Cybertec | https://www.cybertec-postgresql.com




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux