Max*_*iel 4 postgresql triggers foreign-keys
我有一个表transaction_metadata,其中一行带有主键:ac98435e-3eb3-11e9-8a32-4713408df551,它显示在 SELECT 语句中。
在事务中,删除它(DELETE FROM transaction_metadata WHERE id = 'ac98435e-3eb3-11e9-8a32-4713408df551')表示删除 0 行。稍后在事务中,删除该transaction_metadata行引用的行由于破坏外键约束而失败。
怎么会这样?为什么DELETE当它存在于 中时会说它删除了 0 行SELECT,并且外键约束说它存在?
事实证明,问题是我们有一个触发器,每次对一行执行操作时transaction_metadata,我们都会将一行插入transaction_metadata_history记录更改的表中。该表有一个外键约束transaction_metadata,这一定导致 DELETE 不起作用。
作为解决方法,我们关闭了控制台会话的触发器 ( SET session_replication_role = replica;),运行DELETEs,然后重新打开它们 ( SET session_replication_role = DEFAULT;)。
| 归档时间: |
|
| 查看次数: |
1902 次 |
| 最近记录: |