Hi, While using Postgres, I encountered some unexpected behaviour.
In short: --------- Upon doing a faulty INSERT which left a column with default value nextval('sequence') unspecified, the INSERT aborted due to an error. However, a call had been placed to nextval('sequence'), thus increasing the sequence, while this value never got used. I certainly didn't expect this. Detailed report: ---------------- Table projectlist looks like: wwf-projects=# \d projectlist Table "projectlist" Column | Type | Modifiers -------------+-----------------------+-------------------------------------------------------- id | integer | not null default nextval('"projectlist_id_seq"'::text) dbms_host | character varying(30) | not null dbms_port | numeric(5,0) | not null dbms_type | character varying(10) | not null db_name | character varying(20) | not null admin_login | character varying(20) | not null admin_pwd | character varying(20) | not null Unique keys: projectlist_id_key We have a SEQUENCE for id: wwf-projects=# select currval('"projectlist_id_seq"'::text); currval --------- 6 (1 row) Now if we try to perform a faulty INSERT, the INSERT aborts. However, the SEQUENCE is increased!: wwf-projects=# insert into projectlist (dbms_host, dbms_port, dbms_type, db_name, admin_login, admin_pwd) values ('webadmict.tue.nl','5432', 'hugotest-2', 'test', 'test'); ERROR: ExecAppend: Fail to add null value in not null attribute admin_pwd wwf-projects=# select currval('"projectlist_id_seq"'::text); currval --------- 7 (1 row) So 'currval' increased due to an INSERT that was aborted. (Yes, the insert is definately not in the table). I'm not sure if one can call this a bug, but it is unexpected behaviour -- to me, at least. Regards, Hugo Jonker. PS: My apologies about not being on the list, but it was taking longer than expected to get on. ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])