On Thu, 5 Dec 2002, Dan Langille wrote:
> On 5 Dec 2002 at 9:31, Stephan Szabo wrote:
>
> > When we talk about ALTER TABLE ADD FOREIGN KEY we're being imprecise, so
> > I think that might be why we're talking past each other here.
> >
> > Technically the syntax in question is:
> > ALTER TABLE <table> ADD <table constraint definition>
> > where CONSTRAINT <name> is an optional leading clause in a table
> > constraint definition. ADD FOREIGN KEY is a shorthand for a foreign key
> > constraint (technically unnamed).
>
> Understood.
>
> What about allowing a named foreign key? I haven't checked the RFCs
Here's a part of what SQL92 (draft) has to say about table constraint
definitions:
<table constraint definition> ::= [ <constraint name definition> ] <table constraint> [
<constraintattributes> ]
<table constraint> ::= <unique constraint definition> | <referential constraint
definition> | <check constraint definition>
<constraint name definition> ::= CONSTRAINT <constraint name>
<referential constraint definition> ::= FOREIGN KEY <left paren> <referencing columns> <right
paren> <references specification>
11.6 Syntax Rules
2) If <constraint name definition> is not specified, then a <con- straint name definition> that
containsan implementation- dependent <constraint name> is implicit. The assigned <con- straint
name>shall obey the Syntax Rules of an explicit <con- straint name>.
In our case, the implementation dependent naming scheme is I believe
"$<n>" where <n> is the maximum one already there for that table +1 I
would guess.