Re: Problem with subquery in CHECK constraint.
| От | Stephan Szabo | 
|---|---|
| Тема | Re: Problem with subquery in CHECK constraint. | 
| Дата | |
| Msg-id | 004d01bfd175$7d9af7b0$0c64010a@kick.com обсуждение исходный текст | 
| Ответ на | RE: Problem with subquery in CHECK constraint. ("Hiroshi Inoue" <Inoue@tpf.co.jp>) | 
| Список | pgsql-sql | 
> CONSTRAINT TYPE_CD_OK CHECK (
> EXISTS (SELECT 1 FROM XREF WHERE
> XREF_GROUP = 'CUST_TYPE' AND
> XREF_CD = TYPE_CD)
> )
>
>
> > There seems to be more serious problems.
> > 1) The constraint is not only for the defined table but also for
referenced
> >     tables in the subquery.
>
> I don't understand what you mean -- the constraint only
> constrains 1 column in one table...
Think of this sequence:
insert into xref (xref_group, xref_cd) values ('CUST_TYPE', '1');
insert into xref (xref_group, xref_cd) values ('CUST_TYPE', '2');
insert into xref (xref_group, xref_cd) values ('CUST_TYPE', '3');
insert into cust (cust_id, name, type_cd) values (1, 'a', '1');
insert into cust (cust_id, name, type_cd) values (2, 'b', '2');
delete from xref where xref_cd='1';
I believe that technically the delete should fail because it breaks the
type_cd_ok constraint, but right now, we wouldn't be even checking
that constraint to notice that we're breaking it.
		
	В списке pgsql-sql по дате отправления: