↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 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.4 已于 2010 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

SET CONSTRAINTS

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

大纲

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

描述

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

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

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

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

注解

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

兼容性

这条命令符合 SQL 标准定义的行为,但有一个限制:在 PostgreSQL中它只适用于外键约束。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。