Postgresql 博士后是否;选择“更新”选项;是否限制创建新的外键引用?

Postgresql 博士后是否;选择“更新”选项;是否限制创建新的外键引用?,postgresql,locking,Postgresql,Locking,有两个表,一个被另一个具有外键约束的表引用 CREATE TABLE record ( id UUID PRIMARY KEY NOT NULL ); CREATE TABLE task ( id UUID PRIMARY KEY NOT NULL, record_id UUID, CONSTRAINT fk_task_record_id FOREIGN KEY (record_

有两个表,一个被另一个具有外键约束的表引用

CREATE TABLE record
(
  id                    UUID PRIMARY KEY  NOT NULL
);    

CREATE TABLE task
(
  id                    UUID PRIMARY KEY  NOT NULL,
  record_id       UUID,
  CONSTRAINT fk_task_record_id FOREIGN KEY (record_id) 
  REFERENCES record (id)
);
问题是:如果获得了对
记录的锁定

SELECT * FROM record where id = 'A' FOR UPDATE OF record
我是否可以在
任务
表中创建新的外键,并引用此
记录
行 ?

Postgres是否阻止在由
SELECT FOR UPDATE OF
锁定的表上创建新的外键引用

不,没有

选择。。对于更新,仅阻止对该行的更改(更新、删除)


它不会阻止其他事务读取该行,而这正是插入引用锁定行的行所必需的。

除了锁定整个表之外,您能否建议防止创建新引用的方法?
INSERT INTO task VALUES ('someId', 'A');