DEFERRABLE 主鍵檢查強制
DEFERRABLE 主鍵或唯一鍵約束的行為取決於其規範。 PostgreSQL 考慮以下強制場景:
1。 DEFERRABLE INITIALLY IMMEDIATE
DEFERRABLE INITIALLY IMMEDIATE 的約束在每個語句之後強制執行,而不是像您所期望的那樣在每個行更新之後強制執行。這表示:
2. DEFERRABLE INITIALLY DEFERRED
DEFERRABLE INITIALLY DEFERRED 的約束在交易結束時強制執行,允許在同一事務中進行多次更新。這對於在多個語句之間強制執行約束非常有用。
3.不可延遲的約束
聲明為 NOT DEFERRABLE 的約束在每行更新後都會進行檢查,使它們更加嚴格。即使在命令結束時滿足約束,這也可能導致約束違規。
歷史視角
在 PostgreSQL 的早期版本中,不可延遲約束每行更新後也會進行檢查。此行為被認為是錯誤,隨後在 PostgreSQL 9.1 中修正。
實際影響
以上是PostgreSQL 的 DEFERRABLE 主鍵檢查執行如何運作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!