Referential integrity implementation - bug or user error?

From: "msn" <vujadin(at)post(dot)tele(dot)dk>
To: pgsql-sql(at)postgresql(dot)org
Subject: Referential integrity implementation - bug or user error?
Date: 2002-03-10 22:19:34
Message-ID: 20020310.231934.654887343.1425@post.tele.dk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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?

Any help is greatly appreciated.

Thanks.

vujadin

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Peter Eisentraut 2002-03-11 01:33:43 Re: Uniqueness of rule, constraint, and trigger names
Previous Message Paul 2002-03-10 15:33:01 Re: Line Numbering in SELRCT Output