检测到PostgreSQL死锁

时间:2017-11-17 15:29:24

标签: postgresql relational-database database-deadlocks

假设我的表A有2000万个条目,另一个小表B有<100万个条目。

我试图从B指向A添加FK。

Process 1240: ALTER TABLE "product" ADD CONSTRAINT 
"product_top_id_56635_fk_tableb_id" FOREIGN KEY ("top_id")
REFERENCES "tableb" ("id") DEFERRABLE INITIALLY DEFERRED

这种改变会改变tableb上的任何内容吗?如果不是为什么会导致死锁?

1 个答案:

答案 0 :(得分:1)

创建外键不会修改A,但会锁定A中的行。这是为了保证在创建约束时不能修改或删除这些值。

因此,可能存在锁定两个表中的行的其他事务的死锁。

避免使用显式锁定或等待维护窗口对A进行修改。