首页 >数据库 >mysql教程 >PostgreSQL 中何时实际强制执行 DEFERRABLE PRIMARY/UNIQUE 键约束?

PostgreSQL 中何时实际强制执行 DEFERRABLE PRIMARY/UNIQUE 键约束?

DDD
DDD原创
2025-01-06 09:11:40419浏览

When Are DEFERRABLE PRIMARY/UNIQUE Key Constraints Actually Enforced in PostgreSQL?

DEFERRABLE INITIALLY IMMEDIATE 约束:执行强制

问题:

DEFERRABLE / DEFERRABLE/ 的确切点是什么直接唯一/主键约束是强制执行?

答案:

根据著名 PostgreSQL 核心开发人员 Tom Lane 的说法,当前的行为是有意的,不会改变。如果在命令末尾它保持为真,则认为约束已满足,即使在中间步骤期间违反了约束。

约束执行摘要:

  • 不可推迟的唯一/主键约束:在每次之后检查
  • DEFERRABLE 约束(立即): 在每个语句后检查。
  • DEFERRABLE 约束(DEFERRED): 在每个语句后检查

例外:

  • NOT DEFERRABLE 唯一性约束: 尽管 SQL 标准规定在事务结束时强制执行语句,PostgreSQL 在每个 UNIQUE/PRIMARY KEY 命令之后立即检查唯一性

解决方法:

要符合 SQL 标准,请将约束声明为 DEFERRABLE 但 INITIALLY IMMEDIATE。但是,与立即唯一性检查相比,这可能会对性能产生影响。

限制:

FOREIGN KEY 约束无法引用 DEFERRABLE 列,因为引用的列必须是非-可延迟的唯一或主键约束。

以上是PostgreSQL 中何时实际强制执行 DEFERRABLE PRIMARY/UNIQUE 键约束?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn