首頁 >資料庫 >mysql教程 >PostgreSQL 中何時實際強制執行 DEFERRABLE PRIMARY/UNIQUE 鍵約束?

PostgreSQL 中何時實際強制執行 DEFERRABLE PRIMARY/UNIQUE 鍵約束?

DDD
DDD原創
2025-01-06 09:11:40387瀏覽

When Are DEFERRABLE PRIMARY/UNIQUE Key Constraints Actually Enforced in PostgreSQL?

DEFERRABLE INITIALLY IMMEDIATE 約束:執行強制

問題:

答案:

根據著名 PostgreSQL 核心開發人員 Tom Lane 的說法,當前的行為是有意的,不會改變。如果在命令末尾它保持為真,則認為約束已滿足,即使在中間步驟期間違反了約束。

約束執行摘要:

    不可延遲的唯一/主鍵約束:
  • 每次之後檢查
  • DEFERRABLE 約束(立即):
  • 在每個語句後檢查。
  • DEFERRABLE 約束(DEFERRED):
  • 在每個語句後檢查
異常:

    NOT DEFERRABLE唯一性限制:
  • 儘管SQL 標準規定在交易結束時強制執行語句,PostgreSQL 在每個UNIQUE/PRIMARY KEY 指令之後立即檢查唯一性
解決方法:

解決方法:

要符合SQL 標準,請將約束宣告為DEFERRABLE 但INITIALLY IMMEDIATE。但是,與立即唯一性檢查相比,這可能會對效能產生影響。

限制:

FOREIGN KEY 約束無法引用 DEFERRABLE 列,因為引用的欄位必須是非-可延遲的唯一或主鍵約束。

以上是PostgreSQL 中何時實際強制執行 DEFERRABLE PRIMARY/UNIQUE 鍵約束?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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