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> [ <constraint attributes> ] <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 contains an 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. ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster