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