SET CONSTRAINTS
SET CONSTRAINTS 用于设置当前事务中外键约束检查的行为。
支持的语法
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }
说明
SET CONSTRAINTS 用于设置当前事务中约束检查的行为。IMMEDIATE 约束在每个语句执行结束时进行检查。DEFERRED 约束直到事务提交时才进行检查。每个约束均有自己的 IMMEDIATE 或 DEFERRED 模式。
创建约束时,可以为其指定以下三个特性之一:DEFERRABLE INITIALLY DEFERRED、DEFERRABLE INITIALLY IMMEDIATE 或 NOT DEFERRABLE。第三类始终为 IMMEDIATE,并且 SET CONSTRAINTS 命令无法更改它。前两个类以指定模式启动每个事务,但其在事务中的行为可通过 SET CONSTRAINTS 进行更改。
SET CONSTRAINTS 与一组约束名称结合使用时,仅更改这些约束的模式。所有指定的约束必须是可延迟的。SET CONSTRAINTS
ALL 用于更改所有可延迟约束的模式。
当 SET CONSTRAINTS 将约束模式从 DEFERRED 更改为 IMMEDIATE 时,新模式具有追溯效力。Aurora DSQL 会立即检查那些原本被延迟至事务结束时执行的未完成的数据修改。如果违反了任何此类约束,SET CONSTRAINTS 命令将失败,且不会更改约束模式。
有关可延迟性选项(DEFERRABLE、NOT
DEFERRABLE、INITIALLY DEFERRED、INITIALLY IMMEDIATE)的说明,请参阅 CREATE TABLE 页面上的可延迟性。
仅限外键约束
在 Aurora DSQL 中,SET CONSTRAINTS 仅适用于外键约束。主键、唯一、NOT NULL 和 CHECK 约束始终会在插入或修改行时被立即检查,即使您运行 SET CONSTRAINTS ALL DEFERRED 也是如此。
备注
Aurora DSQL 仅在当前事务中更改约束的行为。要使用 SET CONSTRAINTS,请在显式事务块内运行它。
兼容性
此命令符合 SQL 标准中定义的行为,但存在以下限制:Aurora DSQL 仅支持对外键约束进行延迟。