Scott,
http://www.innodb.com/ibman.html#InnoDB_foreign_keys
"
Starting from version 3.23.50 you can also associate the ON DELETE CASCADE
or ON DELETE SET NULL clause with the foreign key constraint. Corresponding
ON UPDATE options are available starting from 4.0.8.
"
Regards,
Heikki
Innobase Oy
sql query
........................
Subject: Innodb Foreign Key Problems.
From: Scott Wong
Date: Wed, 5 Feb 2003 10:03:17 -0800
Hi. Simple parent/child table generates some weird output based on the order
possible bug?
Mysql 3.23.54
CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id)) TYPE=INNODB;
CREATE TABLE child(id INT, parent id INT, INDEX par ind (parent id),
FOREIGN KEY (parent id) REFERENCES parent(id)
ON UPDATE CASCADE
ON DELETE CASCADE
) TYPE=INNODB;
show create table commands give this :
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`)
when it should be
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`) ON DELETE CASCADE
insert into parent set id = 1;
insert into child set id=1, parent id=1;
delete from parent where id = 1;
ERROR 1217: Cannot delete a parent row: a foreign key constraint fails
Now if the child was created like this :
drop table child;
CREATE TABLE child(id INT, parent id INT, INDEX par ind (parent id),
FOREIGN KEY (parent id) REFERENCES parent(id)
ON DELETE CASCADE
ON UPDATE CASCADE
) TYPE=INNODB;
show create table gives this :
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`) ON DELETE CASCADE
Order matters! :)
and another bug from same tables: (do this with the create table command
above)
alter table child add FOREIGN KEY (`parent id`) REFERENCES `test.parent`
(`id`)
ON UPDATE CASCADE
ON DELETE CASCADE
alter table child add FOREIGN KEY (`parent id`) REFERENCES `test.parent`
(`id`)
ON DELETE CASCADE --reversed from above
ON UPDATE CASCADE
and you'll get some nice output from show create table:
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`) ON DELETE CASCADE,
FOREIGN KEY (`parent id`) REFERENCES `test.parent` (`id`)
Thank you for your time.
Fix?
Scott Wong,
Meiko America, INC
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php