Multi-column constraint behaviour
От | Bertram Scharpf |
---|---|
Тема | Multi-column constraint behaviour |
Дата | |
Msg-id | 20070116201809.GA4694@bart.bertram-scharpf.homelinux.com обсуждение исходный текст |
Ответы |
Re: Multi-column constraint behaviour
Re: Multi-column constraint behaviour Re: Multi-column constraint behaviour |
Список | pgsql-general |
Hi, please have a look at these introducing statements: sandbox=# create table q(i integer, t text, primary key (i,t)); NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "q_pkey" for table "q" CREATE TABLE sandbox=# create table f(i integer, t text, foreign key (i,t) references q); CREATE TABLE sandbox=# insert into q (i,t) values (33,'hi'); INSERT 0 1 sandbox=# insert into f (i,t) values (34,'hi'); ERROR: insert or update on table "f" violates foreign key constraint "f_i_fkey" DETAIL: Key (i,t)=(34,hi) is not present in table "q". Now, this is surprising me: sandbox=# insert into f (i,t) values (34,null); INSERT 0 1 sandbox=# select * from f; i | t ----+--- 34 | What I expected was that the constraint forces all values to be null when there is no referenced value pair. I were bored if I had to fix this behaviour with check constraints for every occurrence of the columns pair. Is there a deeper reason why the foreign key allows not referenced non-null values or is there an easy way to fix the whole behaviour? Thanks in advance, Bertram -- Bertram Scharpf Stuttgart, Deutschland/Germany http://www.bertram-scharpf.de
В списке pgsql-general по дате отправления: