Re: [SQL] INSERT w/o variable names for a SERIAL type? - Mailing list pgsql-sql

From Alessio Bragadini
Subject Re: [SQL] INSERT w/o variable names for a SERIAL type?
Date
Msg-id 38B69C52.11EEF672@albourne.com
Whole thread Raw
In response to INSERT w/o variable names for a SERIAL type?  ("Emils Klotins" <emils@mail.usis.bkc.lv>)
List pgsql-sql
Emils Klotins wrote:

> I am using, which is written for connecting to another server
> and uses the AUTO_INCREMENT and BLOB fields (for storing
> text). Apparently it was written for mysql(?).

Most probably.

> I wanted to write a #define or two to change the relevant
> places, such as
> 
> #define IDKEY "INTEGER AUTO_INCREMENT PRIMARY
> KEY" // mysql version
> #define IDKEY "SERIAL PRIMARY KEY" // postgres

Note that SERIAL is syntactic sugar for
INT4 NOT NULL DEFAULT NEXTVAL('<table>_<field>_SEQ')

> INSERT INTO mytable VALUES (NULL, 'textvalue');
> and NULL would get translated into the real value.

Please allow me not to comment on mysql behaviour...

> Now, if I want to write a general #define, I'd need to have a way
> to specify 'default' for SERIAL field, for, if I omit the id field in
> VALUES, I need to specify all the rest of the fields explicitly.
> 
> Is there any value I could put in place of id in VALUES part, to
> make it replaced with the next value in sequence?

NEXTVAL('<table>_<field>_seq') should work.

-- 
Alessio F. Bragadini        alessio@albourne.com
APL Financial Services        http://www.sevenseas.org/~alessio
Nicosia, Cyprus             phone: +357-2-750652

"It is more complicated than you think"    -- The Eighth Networking Truth from RFC 1925


pgsql-sql by date:

Previous
From: "Emils Klotins"
Date:
Subject: INSERT w/o variable names for a SERIAL type?
Next
From: Matthew Hagerty
Date:
Subject: Finding missing records...