SET CONSTRAINTS
是一个用于在当前事务中设置约束检查行为的事务。
SET CONSTRAINTS
添加于 PostgreSQL 7.0。
更改历史记录
- PostgreSQL 9.4
- 在事务块之外执行时,将发出
WARNING
(而不是ERROR
)(提交 a6542a4b)
- 在事务块之外执行时,将发出
- PostgreSQL 7.0
- 添加(提交 1547ee01)
示例
SET CONSTRAINTS
的基本用法示例,演示了如何将约束违规检查推迟到事务结束。
postgres=# CREATE TABLE foo (id INT UNIQUE DEFERRABLE, val TEXT); CREATE TABLE postgres=# INSERT INTO foo VALUES (1, 'hello'); INSERT 0 1 postgres=# BEGIN; BEGIN postgres=*# SET CONSTRAINTS foo_id_key DEFERRED; SET CONSTRAINTS postgres=*# INSERT INTO foo VALUES (1, 'world'); INSERT 0 1 postgres=*# COMMIT; ERROR: duplicate key value violates unique constraint "foo_id_key" DETAIL: Key (id)=(1) already exists.
如果在事务之外使用 SET CONSTRAINTS
,则会发出警告。
postgres=# SET CONSTRAINTS foo_id_key DEFERRED; WARNING: SET CONSTRAINTS can only be used in transaction blocks SET CONSTRAINTS
参考文献
- PostgreSQL 文档: SET CONSTRAINTS