From: | Thomas Mack <mack(at)ips(dot)cs(dot)tu-bs(dot)de> |
---|---|
To: | pgsql-sql(at)postgreSQL(dot)org |
Subject: | Re: [SQL] DEFAULT confusion |
Date: | 1999-09-08 13:51:39 |
Message-ID: | 199909081351.PAA10356@infbsdb1.idb.cs.tu-bs.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
>> INSERT INTO tabel VALUES (NEXTVAL('tabel_seq'), "sometext", 123);
>>
>> I can't just
>> INSERT INTO tabel VALUES (NULL, "something", 123);
>>
>> Then what is the point of the DEFAULT clause? In other words: How do I
>> get away with not specifying anything for id?
>
>It's not ideal, but if you make the sequence the last field in the table,
>e.g.
>
>CREATE TABLE tabel (this int2,that text,id serial)
>
>, then you can do a
>
>INSERT INTO tabel VALUES (5,'whatever);
>
>& that works. I would love to know if there is a 'proper' solution, though.
>
Well - normally you specify your column names in an insert, if you
don't want to fill all values or if you are unsure about the sequence
of attributes:
------------------------------------------------------------
mack=> CREATE SEQUENCE stuff_seq;
CREATE
mack=> CREATE TABLE stuff (
mack-> id INTEGER DEFAULT NEXTVAL('stuff_seq') NOT NULL,
mack-> name TEXT,
mack-> number INTEGER
mack-> );
CREATE
mack=> insert into stuff (name, number) values ('something', 123);
INSERT 1403035 1
mack=> select * from stuff;
id|name |number
--+---------+------
1|something| 123
(1 row)
mack=>
------------------------------------------------------------
Thomas Mack
TU Braunschweig, Abt. Informationssysteme
From | Date | Subject | |
---|---|---|---|
Next Message | Ross J. Reedstrom | 1999-09-08 15:22:58 | Re: [SQL] DEFAULT confusion |
Previous Message | Tom Lane | 1999-09-08 13:32:08 | Re: [SQL] BUG with decimal type |