SQL外键(无法添加或更新子行)

时间:2016-04-20 08:58:16

标签: mysql sql foreign-keys innodb foreign-key-relationship

我与表中的表(技术和问题)有关系有3个状态(in,waiting,out),其中选择了另一个表中的技术。

Relation

问题是,当我尝试更改技术人员的ID时,会出现以下错误:

App.Current.MainWindow.Hide();
new Window().ShowDialog();

更新

#1452 - Cannot add or update a child row: a foreign key constraint fails (`demo_stack`.`problem`, CONSTRAINT `problem_ibfk_1` FOREIGN KEY (`technical_id_in`) REFERENCES `technical` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)

表:

UPDATE `technical` SET `id` = '14' WHERE `technical`.`id` = 1
谁有任何想法?谢谢!!!

1 个答案:

答案 0 :(得分:0)

MySql reference manual的建议:

START TRANSACTION;
SET foreign_key_checks = 0;
UPDATE technical SET id = 14 WHERE ID = 1;
UPDATE problem SET technical_id_in = 14 WHERE technical_id_in = 1;
UPDATE problem SET technical_id_waiting = 14 WHERE technical_id_waiting = 1;
UPDATE problem SET technical_id_out = 14 WHERE technical_id_out = 1;
SET foreign_key_checks = 1;
COMMIT TRANSACTION;
-- or "ROLLBACK TRANSACTION" if anything fails 

您必须自己更新所有外键。

还要确保在事务中运行此脚本,并在事务失败时回滚事务。