![](/img/trans.png)
[英]Does using REFERENCES without FOREIGN KEY still create a foreign key?
[英]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.