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;