On 19 Aug 2003, Bo Lorentsen wrote:
> On Tue, 2003-08-19 at 18:17, Vivek Khera wrote:
>
> > Since the beginning of time (at least MySQL v3.22) MySQL has silently
> > ignored the foreign key references in table create statement. Now
> > that they have foreign key support (version 4.x), do they honor those
> > statements? Nope. You have to use their own syntax to declare your
> > FKs. They still silently ignore the references in the table create
> > statements.
> Is this really true ?? Does 4.x still not support FK, then how about
> transactions, does they that not work too ?
>
> Is this not just the MyISAM tables that still got the problem (they are
> verison 3.x) ?
No, the problem is that in SQL spec, you do it with the foreign key
declaration inside parnes in the create statement like:
create table abc123
(
id serial unique,
info text);
create table abc1234
(
moreinfo text,
ref_id int,
foreign key (ref_id)
references abc123(id)
on delete cascade
);
In MySQL this syntax is silently swallowed, while their own "proper"
syntax is like this:
create table abc123
(
id serial unique,
info text)
type=innodb;
create table abc1234
(
moreinfo text,
ref_id int)
foreign key (ref_id) references abc123(id)
on delete CASCADE
type=innodb;
So the syntaxes are different, and one is apparently swallowed without
error or anything, but in fact you have no fks in place.