INF:Foreign Key Constraint Behavior of Nullable Composite KeysID: Q153370
|
A foreign key constraint may be satisfied under some conditions which may
seem unexpected or unusual. Specifically, if a composite foreign key has
been defined on columns that allow nulls, and at least one of the columns,
upon the insert or update of a row, is set to null, then the foreign key
constraint will be satisfied. This is true even if there is not a row in
the related table to which any of the corresponding columns are matched.
Consider the following example involving tables t1 and t2, defined as
follows:
t1: (col1, col2)
primary key (col1,col2)
t2: (col1 null, col2 null)
foreign key (col1,col2) references t1
If t1 contains one row:
col1 col2
---- ----
A 2
The ANSI standard, as explained in "A Guide to the SQL Standard," 3rd
edition, by C.J. Date and Hugh Darwen, defines foreign key constraints as
follows:
check (fk MATCH [PARTIAL | FULL] (select ck from T))
The referential constraint is satisfied if and only if, for each row r2 of the referencing table, either (a) at least one component of r2.fk is null, or (b) T contains exactly one row, r1 say, such that the comparison condition "r2.fk = r1.ck" evaluates to true.
Keywords :
Version : 6.0 6.5
Platform : WINDOWS
Issue type :
Last Reviewed: March 29, 1999