View a markdown version of this page

SET CONSTRAINTS - Amazon Aurora DSQL

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 仅支持对外键约束进行延迟。