Try this: test=# create table parent(a int4 primary key); NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index 'parent_pkey' for table 'parent' CREATE test=# alter table parent add column "b" int4 references parent(c) on delete set null; ALTER test=# \d test Did not find any relation named "test". test=# \d parent Table "parent" Attribute | Type | Modifier -----------+---------+---------- a | integer | not null b | integer | Index: parent_pkey Notice how the reference to the non-existent column was allowed... Now I check the pg_trigger table: test=# select * from pg_trigger; tgrelid | tgname | tgfoid | tgtype | tgenabled | tgisconstraint | tgconst rname | tgconstrrelid | tgdeferrable | tginitdeferred | tgnargs | tgattr | tgargs ---------+----------------+--------+--------+-----------+----------------+-- ------ ------+---------------+--------------+----------------+---------+--------+-- ------ 1260 | pg_sync_pg_pwd | 1689 | 29 | t | f | | 0 | f | f | 0 | | (1 row) ...and it looks like the reference was never created... Chris ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster