我有两笔交易。一个在创建后分配标签(交易B)。另一个事务(事务A)删除任何帖子不再使用的标记。它是在删除后删除的。
交易A
SELECT COUNT(*) FROM post_tags WHERE tag_id = 45;
交易B
SELECT id FROM tag WHERE name = 'rss';
交易A
DELETE FROM tag WHERE id = 45;
交易B
-- Now, foreign key violation
INSERT INTO post_tags(post_id, tag_id) VALUES(123, 45);
我知道我可以在两个事务中使用SELECT FOR UPDATE,但我不想锁定只分配标记的事务。 我希望他们只有在有一个试图删除标签的交易时才会锁定。