postgres"选择更新"限制创建新的外键引用?

时间:2017-11-17 14:02:05

标签: 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_id) 
  REFERENCES record (id)
);

问题是:如果record行锁定是

获取的话
SELECT * FROM record where id = 'A' FOR UPDATE OF record

我可以在task表中创建新的外键并引用这个非常record行 ?

INSERT INTO task VALUES ('someId', 'A');

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

1 个答案:

答案 0 :(得分:1)

不,它没有。

select .. for update仅阻止更改(更新,删除)到该行。

它不会阻止读取该行的其他事务,以及插入行引用锁定行所需的内容。