返回介绍

I. 教程

II. SQL 语言

III. 服务器管理

IV. 客户端接口

V. 服务器端编程

VI. 参考手册

VII. 内部

VIII. 附录

SET CONSTRAINTS

发布于 2019-09-30 03:11:47 字数 1267 浏览 984 评论 0 收藏 0

名称

SET CONSTRAINTS--设置当前事务的约束检查模式

语法

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

描述

SET CONSTRAINTS 设置当前事务里的约束检查的特性。IMMEDIATE 约束是在每条语句后面进行检查。DEFERRED 约束一直到事务提交时才检查。每个约束都有自己的 IMMEDIATEDEFERRED 模式。

从创建的时候开始,一个约束总是给定为 DEFERRABLE INITIALLY DEFERRED, DEFERRABLE INITIALLY IMMEDIATE, NOT DEFERRABLE 三个特性之一。第三种总是 IMMEDIATE ,并且不会受 SET CONSTRAINTS 影响。头两种以指定的方式启动每个事务,但是他们的行为可以在事务里用 SET CONSTRAINTS 改变。

带着一个约束名列表的 SET CONSTRAINTS 改变这些约束的模式(都必须是可推迟的)。如果有多个约束匹配某个名字,那么所有都会被影响。SET CONSTRAINTS ALL 改变所有可推迟约束的模式。

SET CONSTRAINTS 把一个约束从 DEFERRED 改成 IMMEDIATE 的时候,新模式反作用式地起作用:任何将在事务结束准备进行的数据修改都将在 SET CONSTRAINTS 的时候执行检查。如果违反了任何约束,SET CONSTRAINTS 都会失败(并且不会修改约束模式)。因此,SET CONSTRAINTS 可以用于强制在事务中某一点进行约束检查。

目前,只有外键约束被这个设置影响。检查和唯一约束总是不可推迟的。

注意

这个命令只在当前事务里修改约束的行为。因此,如果你在事务块之外(BEGIN/COMMIT 对)执行这个命令,它将没有任何作用。

兼容性

这条命令与 SQL 标准里定义的行为兼容,只不过,在 PostgreSQL 里,它只适用于外键约束。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文