有两个表,一个用另一个外键约束引用。
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
锁定的表上创建新的外键引用?
答案 0 :(得分:1)
不,它没有。
select .. for update
仅阻止更改(更新,删除)到该行。
它不会阻止读取该行的其他事务,以及插入行引用锁定行所需的内容。