簡體   English   中英

postgres“ SELECT FOR UPDATE”是否限制創建新的外鍵引用?

[英]Does postgres “SELECT FOR UPDATE” restrict to create new foreign key references ?

有兩個表,其中一個被外鍵約束引用。

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鎖定的表上創建新的外鍵引用?

不,不是的。

select .. for update僅阻止對該行的更改 (更新,刪除)。

它不會阻止其他事務讀取該行,而這就是插入引用鎖定行的行所需要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM