Postgresql 为什么我的postgresdelete删除零行,而一行存在?
我有一个表Postgresql 为什么我的postgresdelete删除零行,而一行存在?,postgresql,triggers,foreign-keys,Postgresql,Triggers,Foreign Keys,我有一个表transaction\u metadata,其中有一行主键:ac98435e-3eb3-11e9-8a32-4713408df551,它显示在SELECT语句中 在事务中,删除它(DELETE FROM transaction_metadata,其中id='ac98435e-3eb3-11e9-8a32-4713408df551')表示删除0行。在事务的后面,删除transaction\u元数据行引用的行失败,原因是破坏了外键约束 这怎么可能?为什么DELETE说它在SELECT中存
transaction\u metadata
,其中有一行主键:ac98435e-3eb3-11e9-8a32-4713408df551
,它显示在SELECT语句中
在事务中,删除它(DELETE FROM transaction_metadata,其中id='ac98435e-3eb3-11e9-8a32-4713408df551'
)表示删除0行。在事务的后面,删除transaction\u元数据
行引用的行失败,原因是破坏了外键约束
这怎么可能?为什么
DELETE
说它在SELECT
中存在时删除了0行,而外键约束说它存在?结果是我们有一个触发器,每次对事务元数据行执行操作时,我们在记录更改的transaction\u metadata\u history
表中插入了一行。此表对事务\u元数据
有外键约束,这一定导致删除不起作用
作为一种解决方法,我们关闭了控制台会话的触发器(SET session\u replication\u role=replica;
),运行DELETE
s,然后将其重新打开(SET session\u replication\u role=DEFAULT;
)