首頁 > 資料庫 > mysql教程 > 資料庫中的外鍵列可以接受 NULL 值嗎?

資料庫中的外鍵列可以接受 NULL 值嗎?

Linda Hamilton
發布: 2025-01-11 06:44:41
原創
633 人瀏覽過

Can Foreign Key Columns Accept NULL Values in a Database?

允許空值的外鍵約束

在資料庫設計中,通常需要使用外鍵在表之間建立關係以確保參考完整性。但是,在某些情況下,可能需要允許某些外鍵列為空,從而放鬆約束。

問題:

資料庫中具有外鍵的表格列可以為空嗎?

答案:

是的,外鍵列可以包含空值。這使得資料建模更加靈活,並且可以在外鍵列中只有非空資料時才執行參考完整性的場景中使用。

MySQL 範例:

考慮一個具有以下表格的 MySQL 資料庫:

<code class="language-sql">CREATE DATABASE t;
USE t;

CREATE TABLE parent (
  id INT NOT NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB;

CREATE TABLE child (
  id INT NULL,
  parent_id INT NULL,
  FOREIGN KEY (parent_id) REFERENCES parent(id)
) ENGINE=INNODB;</code>
登入後複製

在此範例中,child 表中的 parent_id 欄位被定義為可為空。這表示 child 表中可以有 parent_id 欄位值為 NULL 的行。

僅當數值不為空時才強制約束:

要僅在外鍵值不為空時才強制參考完整性,需要使用 ON DELETE SET NULL 或 ON UPDATE SET NULL 子句定義外鍵約束。例如,以下語句僅在外鍵值不為空白時才強制外鍵約束:

<code class="language-sql">ALTER TABLE child
ADD FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE SET NULL ON UPDATE SET NULL;</code>
登入後複製

此配置允許將空值插入 parent_id 列,但父表中的任何後續更新或刪除都會級聯到子表,導致子表中對應的 parent_id 值設為 NULL。

結論:

透過允許外鍵列為空白並使用 ON DELETE SET NULL 或 ON UPDATE SET NULL 子句,資料庫管理員可以在表之間建立關係,同時在資料管理中提供彈性。這確保了參照完整性,同時允許在特定引用可能無法立即獲得或故意留空的情況下使用。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板