SET CONSTRAINTS(7)

NAME
SET CONSTRAINTS - 設置當前事務的約束模式

SYNOPSIS

SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }

DESCRIPTION 描述

SET CONSTRAINTS 設置當前事務裏的約束運算的特性。 在 IMMEDIATE 模式下，約束是在每條語句後面進行檢查的。 在 DEFERRED 模式下，一直到事務提交時才檢查約束。

 在你把約束的模式修改成 IMMEDIATE 之後，新的約束模式是反作用式地生效的： 任何尚在等待的，需要在事務結束檢查地數據修改的約束（在使用 DEFERRED 的時候）都將在執行 SET CONSTRAINTS 命令的時候馬上檢查。

 從創建的時候開始，一個約束總是表現為下面三個特性之一： INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE, 或 INITIALLY IMMEDIATE NOT DEFERRABLE。 第三個特性不會受 SET CONSTRAINTS影響。

 目前，只有外鍵約束被這個設置影響。檢查和唯一約束總是立即檢查的而不是可推遲的。

NOTES 注意

 這個命令只在當前事務裏修改約束的行為。因此，如果你在事務塊外面 （BEGIN/COMMIT 對）執行這個命令， 它將顯得沒有任何作用那樣。如果你希望不在每個事務中發出 SET CONSTRAINTS 也能修改約束的行為， 那麼在創建這些約束的時候聲明 INITIALLY DEFERRED 或者 INITIALLY IMMEDIATE。

COMPATIBILITY 相容性

 這條命令與 SQL 標準裏定義的行為相容，只不過，在 PostgreSQL 裏，它只適用於外鍵約束。

譯者
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>