Hi,
Postgres fails to set null values when referenced key is deleted.
I think I will try to explain with this simple example which
I have tested on my linux box (rhat7.2) running postgres-v7.2.
I have two tables as follows
create table t1 ( id integer not null primary key
);
create table t2 ( id integer not null primary key, t1_aid integer, t1_bid integer, foreign key
(t1_aid) references t1 (id) on delete set null on update cascade,
foreignkey (t1_bid) references t1 (id) on delete set null on update cascade
);
... and then I add some values as in
msn=# insert into t1 values (1);
INSERT 16904 1
msn=# insert into t1 values (2);
INSERT 16905 1
msn=# insert into t2 values (1, 1, 1);
INSERT 16906 1
msn=# insert into t2 values (2, 2, 2);
INSERT 16907 1
msn=# insert into t2 values (3, 1, 2);
INSERT 16908 1
But then when I try to delete one id from t1 I get this error message.
msn=# delete from t1 where id=1;
ERROR: <unnamed> referential integrity violation - key referenced from t2
not found in t1
Why this fails to set columns t1_aid and t1_bid in table t2 to null?
Any help is greatly appreciated.
Thanks.
vujadin