簡體   English   中英

在具有外鍵約束的表中添加行[MySQL]

[英]Adding rows to table with foreign key constraint [MySQL]

我有一個新表,該表具有對舊的舊表的外鍵約束。 舊表中填充了大量數據,但是當我嘗試向新表中添加行以引用舊表中的行時,我得到了Cannot add or update a child row: a foreign key constraint fails錯誤。

如何在新表中添加引用舊表中的行的行?

編輯這是我嘗試的兩個查詢:

mysql> select user_pk from users where username = 'test_user';
+---------+
| user_pk |
+---------+
|  123766 |
+---------+
1 row in set (0.00 sec)

mysql> insert into uservisit (user_id) values (123766);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test_database`.`uservisit`, CONSTRAINT `user_id_refs_user_pk_37c3999c` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_pk`))

難道我做錯了什么?

您可以像這樣暫時禁用外鍵檢查:

SET foreign_key_checks = 0;
...
do updates
...
SET foreign_key_checks = 1;

最好確保在進行所有更新之后,一切都按外鍵順序進行。

當您插入新行時,使用外鍵放入列中的值也必須存在於舊表的引用列中。

也許,如果您過去進行一些查詢和示例數據,將更容易獲得幫助。

如果您使用的是5.5.13之前的MySQL版本,則可能會遇到以下錯誤:
存在外鍵時,MySQL 5.5外鍵約束失敗

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM