gpt4 book ai didi

postgresql - 为什么我的 Postgres DELETE 删除零行,当存在一个行时?

转载 作者:行者123 更新时间:2023-11-29 13:10:50 25 4
gpt4 key购买 nike

我有一个表 transaction_metadata,其中一行包含主键:ac98435e-3eb3-11e9-8a32-4713408df551,它显示在 SELECT 语句中。

在事务中,删除它(DELETE FROM transaction_metadata WHERE id = 'ac98435e-3eb3-11e9-8a32-4713408df551')表示它删除了 0 行。稍后在事务中,删除引用的 transaction_metadata 行由于违反外键约束而失败。

怎么会这样?当 SELECT 中存在时,为什么 DELETE 说它删除了 0 行,而外键约束说它存在?

最佳答案

原来的问题是我们有一个触发器,每次对 transaction_metadata 行执行操作时,我们都会在 transaction_metadata_history 表中插入一行记录改变。此表在 transaction_metadata 上有外键约束,这一定导致 DELETE 不起作用。

作为解决方法,我们关闭了控制台 session 的触发器 (SET session_replication_role = replica;),运行 DELETE,然后重新打开它们 (SET session_replication_role = DEFAULT;).

关于postgresql - 为什么我的 Postgres DELETE 删除零行,当存在一个行时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54992404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com