并发SELECT和DELETE

时间:2013-03-27 10:17:58

标签: mysql database-concurrency

我有两笔交易。一个在创建后分配标签(交易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,但我不想锁定只分配标记的事务。 我希望他们只有在有一个试图删除标签的交易时才会锁定。

0 个答案:

没有答案