DEFERRABLE 主键检查强制
DEFERRABLE 主键或唯一键约束的行为取决于其规范。 PostgreSQL 考虑以下强制场景:
1。 DEFERRABLE INITIALLY IMMEDIATE
DEFERRABLE INITIALLY IMMEDIATE 的约束在每个语句之后强制执行,而不是像您所期望的那样在每个行更新之后强制执行。这意味着:
2. DEFERRABLE INITIALLY DEFERRED
DEFERRABLE INITIALLY DEFERRED 的约束在事务结束时强制执行,允许在同一事务中进行多次更新。这对于在多个语句之间强制执行约束非常有用。
3.不可延迟的约束
声明为 NOT DEFERRABLE 的约束在每行更新后都会进行检查,使它们更加严格。即使在命令结束时满足约束,这也可能导致约束违规。
历史视角
在 PostgreSQL 的早期版本中,不可延迟约束每行更新后也会进行检查。此行为被认为是一个错误,随后在 PostgreSQL 9.1 中得到纠正。
实际影响
以上是PostgreSQL 的 DEFERRABLE 主键检查执行如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!