首頁 >資料庫 >mysql教程 >MySQL 外鍵可以允許 NULL 值嗎?

MySQL 外鍵可以允許 NULL 值嗎?

Patricia Arquette
Patricia Arquette原創
2025-01-11 10:12:41159瀏覽

Can MySQL Foreign Keys Allow NULL Values?

MySQL 外鍵允許 NULL 值嗎?

在設計資料庫表時,強制資料完整性至關重要。透過外鍵引用其他表的列在維護這些連接方面起著關鍵作用。一個常見的問題是:具有外鍵的表列是否允許 NULL 值?

在使用 InnoDB 表類型的 MySQL 中,答案是肯定的。您可以將外鍵列聲明為可為空的。此行為允許您在外鍵列中插入具有 NULL 值的新行,但在輸入非 NULL 值時強制執行約束。

為了說明這一點,請考慮以下範例:

<code class="language-sql">CREATE TABLE parent (id INT NOT NULL, PRIMARY KEY (id));
CREATE TABLE child (
  id INT NULL,
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
);</code>

現在,讓我們在「child」表中插入一行,其中「parent_id」為 NULL:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (1, NULL);
-- 查询成功,影响 1 行 (0.01 秒)</code>

此插入操作成功,因為我們為「parent_id」欄位指定了 NULL 值。但是,嘗試插入「parent」表中不存在的非 NULL 值將導致錯誤,因為外鍵約束被強制執行:

<code class="language-sql">INSERT INTO child (id, parent_id) VALUES (2, 1);

-- 错误 1452 (23000):无法添加或更新子行:外键约束失败 (`t/child`, CONSTRAINT `child_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`id`))</code>

此行為為資料完整性提供了靈活性和控制。您可以在資料填充期間允許臨時 NULL 值,同時仍在以後強制執行外鍵約束。透過仔細管理外鍵列上的 NULL 約束,您可以確保資料的準確性和一致性。

以上是MySQL 外鍵可以允許 NULL 值嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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