Hello, In Case 1, you need to change: "index i_Tb (customerId, carId)" => "index i_Tb (carId, customerId)" or add "index i_carId (carId)"
In Case 2, you need : "foreign key (customerId) references customerTb (customerId)" => "foreign key (customerId) references customerTb (customerId) on delete cascade". José Ceferino Ortega -----Mensaje original----- De: Bruce Lee [mailto:itnobita@;hotmail.com] Enviado el: viernes, 15 de noviembre de 2002 4:35 Para: [EMAIL PROTECTED] Asunto: Foreign Keys and InnoDb in MySQL Hello, I have a problem about foreign key in using MySQL.com manual. According to the example in MySQL.com manual, one foreign key is ok. However, I have 3 tables (ie. 2 for parent tables and 1 for child table). When I use 2 or more foreign keys, I have the following errors. Case 1: mysql> create table customerTb ( customerId int not null, primary key (customerId) ) type = innodb; mysql> insert into customerTb values (1), (2), (3), (4), (5); mysql> create table carTb ( carId int not null, primary key (carId) ) type = innodb; mysql> insert into carTb values (1), (2), (3), (4), (5); mysql> create table buyTb ( customerId int not null, carId int not null, primary key (customerId, carId), index i_Tb (customerId, carId), foreign key (customerId) references customerTb (customerId), foreign key (carId) references carTb (carId) on delete cascade ) type = innodb; ERROR 1005 at line 15: Can't create table '.\ibdata\buytb.frm' (errno: 150) Case 2: mysql> create table customerTb ( customerId int not null, primary key (customerId) ) type = innodb; mysql> insert into customerTb values (1), (2), (3), (4), (5); mysql> create table carTb ( carId int not null, primary key (carId) ) type = innodb; mysql> insert into carTb values (1), (2), (3), (4), (5); mysql> create table buyTb ( customerId int not null, carId int not null, primary key (customerId, carId), index i_customerTb (customerId), index i_carTb (carId), foreign key (customerId) references customerTb (customerId), foreign key (carId) references carTb (carId) on delete cascade ) type = innodb; mysql> insert into buyTb values (1, 1), (1, 2), (1, 3), (2, 3), (4, 3), mysql> (4, 4), (4, 5), (5, 5), (5, 1); mysql> delete from customerTb where customerId = 1; ERROR 1217: Cannot delete a parent row: a foreign key constraint fails I have thought it for more than three nights, but I still have no solution for this. Can the manual state whether Innodb can support more then one foreign key or not? It makes me so confused. Thanks a lot! Nobita _________________________________________________________________ Tired of spam? Get advanced junk mail protection with MSN 8. http://join.msn.com/?page=features/junkmail --------------------------------------------------------------------- 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 --------------------------------------------------------------------- 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