SET CONSTRAINTS DEFERRED | IMMEDIATE

SET CONSTRAINTS

Name

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

Synopsis

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

描述

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

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

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

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

在你把约束的模式修改成 IMMEDIATE 之后,新的约束模式是反作用式地生效的: 任何尚在等待的,需要在事务结束检查地数据修改的约束(在使用 DEFERRED 的时候)都将在执行 SET CONSTRAINTS 命令的时候马上检查。

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

注意

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七七powerful

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值