↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本。 PostgreSQL 7.3 已结束支持。 请参阅 当前版本手册.

SET CONSTRAINTS

SET CONSTRAINTS — 设置当前事务的约束模式

大纲

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

描述

SET CONSTRAINTS设置当前事务中约束检查的行为。在 IMMEDIATE 模式下,约束在每条语句结束时检查。在 DEFERRED 模式下,约束直到事务提交时才检查。

注意

这条命令只更改当前事务内约束的行为。因此,如果你在一个显式事务块(例如用BEGIN启动的事务)之外执行这条命令,它将看不出有任何效果。如果你希望更改一个约束的行为而又不必在每个事务中都发出一条 SET CONSTRAINTS命令,可以在创建约束时指定 INITIALLY DEFERRED 或 INITIALLY IMMEDIATE。

当你把一个约束的模式改为 IMMEDIATE 时,新的约束模式会追溯生效:任何原本会在事务结束时(使用 DEFERRED时)检查的未完成数据修改,都会改在SET CONSTRAINTS命令执行期间检查。

约束在创建时总是被赋予下列三种特性之一:INITIALLY DEFERRED、INITIALLY IMMEDIATE DEFERRABLE或 INITIALLY IMMEDIATE NOT DEFERRABLE。第三类不受SET CONSTRAINTS命令的影响。

目前,只有外键约束受此设置影响。检查和唯一约束实际上总是初始立即且不可推迟的。

兼容性

SQL92, SQL99

SET CONSTRAINTS 定义于 SQL92 和 SQL99。PostgreSQL中的实现符合标准定义的行为,但 PostgreSQL 有一个限制:SET CONSTRAINTS 不能应用于检查或唯一约束。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.