While testing deferred unique constraints I found this: # CREATE TABLE test ( i INT4 PRIMARY KEY ); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test" CREATE TABLE
# set constraints test_pkey deferred; ERROR: constraint "test_pkey" does not exist The constraint definitely exists: # select * from pg_constraint where conname = 'test_pkey'; -[ RECORD 1 ]-+---------- conname | test_pkey connamespace | 2200 contype | p condeferrable | f condeferred | f conrelid | 17533 contypid | 0 conindid | 17536 confrelid | 0 confupdtype | confdeltype | confmatchtype | conislocal | t coninhcount | 0 conkey | {1} confkey | [null] conpfeqop | [null] conppeqop | [null] conffeqop | [null] conbin | [null] consrc | [null] This (set ... deferred) works perfectly if i define the table like this: # CREATE TABLE test ( i INT4 PRIMARY KEY DEFERRABLE INITIALLY IMMEDIATE ); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_pkey" for table "test" CREATE TABLE # set constraints test_pkey deferred; SET CONSTRAINTS Also. As I understand (I might be wrong, so please clarify if I am), when I create table with primary key that is "deferrable initially immediate", it will act as immediate unless i will set it to deferred with "set constraints". If that's true, then why it works: # INSERT INTO test (i) values (1), (2), (3); INSERT 0 3 # update test set i = i + 1; UPDATE 3 shouldn't it raise exception? and work *only* if i set the constraint to deferred? depesz -- Linkedin: http://www.linkedin.com/in/depesz / blog: http://www.depesz.com/ jid/gtalk: dep...@depesz.com / aim:depeszhdl / skype:depesz_hdl / gg:6749007 -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs