Postgresql 插入到分区表postgres期间锁定

Postgresql 插入到分区表postgres期间锁定,postgresql,database-locking,Postgresql,Database Locking,插入期间是否可以排除约束 create table parent(id int) create table c1 ( constraint c1_constarint CHECK (id = 1)) inherits parent create table c2 ( constraint c2_constarint CHECK (id = 2)) inherits parent create table c3 ( constraint c3_constarint

插入期间是否可以排除约束

create table parent(id int)

    create table c1 ( constraint  c1_constarint CHECK (id = 1)) inherits parent
    create table c2 ( constraint  c2_constarint CHECK (id = 2)) inherits parent
    create table c3 ( constraint  c3_constarint CHECK (id = 3)) inherits parent
当做 在c1值(1)中插入它正在获取所有子项(c2、c3)上的排他锁


在插入过程中有没有一种方法可以进行约束排除?或者执行此操作的任何提示

为什么行独占锁有问题?我同时运行两个会话,第一个会话:截断c1;插入c1;-Truncate正在创建AccessExclusive和insert,并使用RowExclusive锁检查所有子项。第二节:截断c2;插入c2;-Truncate正在c2上创建AccessExclusive,Insert正在尝试在所有子级上创建RowExclusive。在此场景中,会话2 c1和会话1 c2排他锁发生冲突。这正在创建死锁。我刚刚在v10上尝试,并在
c1
中插入仅锁定
c1
。你能想出一个可复制的测试用例吗?我运行的版本是8.2,也许它是正确的?8.2??你标记了9.3。8.2已死亡约7年。