On Tue, 28 Feb 2017 11:42:23 -0500, "James K. Lowden"
<[email protected]> wrote:
> I have always thought af a foreign key as an existence test. Looking
> around, I see that other implementations also often require the
> referent to be unique. I'm not convinced that's justified
> theoretically, but at the moment I can't check against my usual
> resources.
Here you go:
Information Technology - Database Language SQL
(Proposed revised text of DIS 9075)
(Second Informal Review Draft) ISO/IEC 9075:1992,
Database Language SQL- July 30, 1992
which is pretty close to the final text.
X3H2-92-154/DBL CBR-002 (page 274 or thereabout)
11.8 <referential constraint definition>
Function
Specify a referential constraint.
Format
<referential constraint definition> ::=
FOREIGN KEY <left paren> <referencing columns> <right paren>
<references specification>
<references specification> ::=
REFERENCES <referenced table and columns>
[ MATCH <match type> ]
[ <referential triggered action> ]
<match type> ::=
FULL
| PARTIAL
<referencing columns> ::=
<reference column list>
<referenced table and columns> ::=
<table name> [ <left paren> <reference column list> <right paren> ]
<reference column list> ::= <column name list>
<referential triggered action> ::=
<update rule> [ <delete rule> ]
| <delete rule> [ <update rule> ]
<update rule> ::= ON UPDATE <referential action>
<delete rule> ::= ON DELETE <referential action>
<referential action> ::=
CASCADE
| SET NULL
| SET DEFAULT
| NO ACTION
Syntax Rules
1) Let referencing table be the table identified by the containing
<table definition> or <alter table statement>. Let referenced
table be the table identified by the <table name> in the <refer-
enced table and columns>. Let referencing columns be the column
or columns identified by the <reference column list> in the
<referencing columns> and let referencing column be one such
column.
2) Case:
a) If the <referenced table and columns> specifies a <reference
column list>, then the set of column names of that <refer-
ence column list> shall be equal to the set of column names
in the unique columns of a unique constraint of the refer-
enced table. Let referenced columns be the column or columns
identified by that <reference column list> and let refer-
enced column be one such column. Each referenced column shall
identify a column of the referenced table and the same column
shall not be identified more than once.
b) If the <referenced table and columns> does not specify a
<reference column list>, then the table descriptor of the
referenced table shall include a unique constraint that spec-
ifies PRIMARY KEY. Let referenced columns be the column or
columns identified by the unique columns in that unique con-
straint and let referenced column be one such column. The
<referenced table and columns> shall be considered to implic-
itly specify a <reference column list> that is identical to
that <unique column list>.
3) The table constraint descriptor describing the <unique con-
straint definition> whose <unique column list> identifies the
referenced columns shall indicate that the unique constraint is
not deferrable.
--
Regards,
Kees Nuyt
_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users