Re: Referential integrity implementation - bug or user error?
От | missive@frontiernet.net (Lee Harr) |
---|---|
Тема | Re: Referential integrity implementation - bug or user error? |
Дата | |
Msg-id | slrna8qlmb.4k.missive@whave.frontiernet.net обсуждение исходный текст |
Ответ на | Referential integrity implementation - bug or user error? ("msn" <vujadin@post.tele.dk>) |
Список | pgsql-sql |
On Sun, 10 Mar 2002 23:19:34 +0100, msn <vujadin@post.tele.dk> wrote: > 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, > foreign key (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? > I guess it fails because the key it tries to use in t2 (NULL) is not in t1 (the only keys there are 1 and 2). You could insert a NULL key in to t1, then it might work... Though I am not so sure that makes sense.
В списке pgsql-sql по дате отправления: