单个Postgresql表不允许删除,外键不起作用

44u64gxh  于 2023-01-08  发布在  PostgreSQL
关注(0)|答案(1)|浏览(241)

我们有一个包含许多表的Postgresql数据库表。除了1个表之外,所有的表似乎都运行良好。在过去的一两天里,它停止了行删除。当我们尝试类似下面这样的简单操作时

delete from bad_table where id_foo = 123;

它的行为就好像它已经成功地删除了该行。但是当我们这样做时

select * from bad_table where id_foo = 123;

那一排还在。
相同类型的查询在我们尝试过的所有其他表上都运行良好。
此外,此表上的外键不起作用。引用其他表的列上有外键约束。“bad_table”中有一个ID,但该ID在引用的表中不存在。外键约束在所有其他表中似乎都起作用,但只有此表起作用。我们尝试删除并重新创建外键(看起来很成功),但没有效果。
我和我的同事们在oracle、sql server、postgres等关系数据库领域大概有80年的经验,但我们中没有一个人见过这样的事情。我们一直在撞墙,现在正走向更广阔的世界,看看是否有人知道我们可以尝试什么。还有人在Postgres中见过这样的事情吗?

dldeef67

dldeef671#

结果是,通过删除外键约束然后立即再次添加它,解决了外键的问题。
通过删除行删除时调用的触发器,然后立即重新创建相同的触发器,修复了无法删除行的问题。
我不知道发生了什么,但它的行为就像是该特定表上的约束和触发器被损坏了。

相关问题