微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将值插入带有外键的表中?

如何解决如何将值插入带有外键的表中?

我有 this 表方案

由于错误 1452(无法添加或更新子行),我根本无法将任何值插入到第二个或 3d 表中。 我怎样才能插入一些东西? (不使用 SET FOREIGN_KEY_CHECKS=0;)

解决方法

如果您有循环外键引用而不能直接插入数据 - 由于外键违规,插入任何表都会失败,并且不支持每个查询插入多个表。

解决方法:插入第一个表但将引用列设置为NULL,插入第二个表,更新第一个表。

示例:

CREATE TABLE test1 (t1_id INT PRIMARY KEY,t2_id INT);
CREATE TABLE test2 (t1_id INT,t2_id INT PRIMARY KEY);
ALTER TABLE test1 ADD FOREIGN KEY (t2_id) REFERENCES test2 (t2_id);
ALTER TABLE test2 ADD FOREIGN KEY (t1_id) REFERENCES test1 (t1_id);
INSERT INTO test1 VALUES (1,11);
Cannot add or update a child row: a foreign key constraint fails (`db_262184466`.`test1`,CONSTRAINT `test1_ibfk_1` FOREIGN KEY (`t2_id`) REFERENCES `test2` (`t2_id`))
INSERT INTO test2 VALUES (1,11);
Cannot add or update a child row: a foreign key constraint fails (`db_262184466`.`test2`,CONSTRAINT `test2_ibfk_1` FOREIGN KEY (`t1_id`) REFERENCES `test1` (`t1_id`))
INSERT INTO test1 VALUES (1,NULL);
INSERT INTO test2 VALUES (1,11);
UPDATE test1 SET t2_id = 11 WHERE t1_id = 1;
SELECT * FROM test1; 
SELECT * FROM test2;
t1_id | t2_id
----: | ----:
    1 |    11

t1_id | t2_id
----: | ----:
    1 |    11

dbfiddle here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。