首頁 >資料庫 >mysql教程 >為什麼 MySQL 會拋出「無法新增或更新子行:外鍵約束失敗」(錯誤 1452)?

為什麼 MySQL 會拋出「無法新增或更新子行:外鍵約束失敗」(錯誤 1452)?

Susan Sarandon
Susan Sarandon原創
2024-12-21 00:01:11148瀏覽

Why Does MySQL Throw

MySQL 外鍵約束問題:無法新增或更新子行

嘗試在MySQL 表中建立外鍵約束時,您可能會遇到錯誤1452:「無法新增或更新子行:外鍵約束失敗。」當一個表中的子行引用另一個表中不再存在的父行時,就會出現此問題。

在提供的場景中,您嘗試在引用 sourcecodes 表的 sourcecodes_tags 表中新增外鍵。但是,錯誤訊息表示 sourcecodes_tags 表中存在孤立記錄,這些記錄引用了 sourcecodes 表中不存在的行。

要解決此問題,首先需要識別孤立記錄。您可以使用下列查詢來檢索這些記錄:

SELECT DISTINCT sourcecode_id 
FROM sourcecodes_tags tags 
LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;

識別出孤立記錄後,您可以將它們從 sourcecodes_tags 表中刪除。這將使您能夠成功新增外鍵約束。

透過強制執行外鍵約束來確保資料庫表中的參考完整性非常重要。這些約束可以防止資料不一致並維護表之間的關係。透過解決孤立記錄,您可以解決錯誤 1452 並在資料庫表之間建立正確的關係。

以上是為什麼 MySQL 會拋出「無法新增或更新子行:外鍵約束失敗」(錯誤 1452)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn