定义为 DEFERRED / DEFERRABLE 和 INITIALLY IMMEDIATE 的主要和唯一键约束强制唯一性在交易过程中的特定点执行。
1。修改多行的更新语句:
修改涉及主键交换的多行的 UPDATE 语句即使使用 INITIALLY IMMEDIATE 约束也会成功,因为约束检查被推迟到该语句之后。
2.数据修改 CTE:
数据修改 CTE 的行为类似,但冲突更新除外,更新会因非延迟主键冲突而失败。
3.事务中的多个 UPDATE 语句:
如果没有 SET CONSTRAINTS,事务中违反唯一约束的多个 UPDATE 语句将失败,因为在每个语句之后执行检查。
注意: UNIQUE 和 PRIMARY KEY 约束会被特殊对待,非延迟约束是每次修改后立即检查。
到为了实现符合标准的行为,DEFERRABLE 约束应声明为 INITIALLY IMMEDIATE,但不能延迟。与立即唯一性检查相比,这可能会降低性能。
DEFERRABLE 约束不能用于 FOREIGN KEY 引用,因为引用的列必须是不可延迟的唯一或主键约束。
以上是延迟和立即约束如何影响数据库事务中的主键和唯一键强制执行?的详细内容。更多信息请关注PHP中文网其他相关文章!