【发布时间】:2015-12-08 05:49:26
【问题描述】:
我想查询一张表,看看是否存在'A'类型的行。 所以我使用这个sql:
SELECT EXISTS(select * from %T where type = 'A');
然后我需要将另一个表的列值更新为上述结果。为了防止在更新期间发生“A”类型的插入,我正在考虑使用锁。但是锁很贵,有没有其他不加锁的替代方法?
如果我们必须使用锁,我在想如果表已经有类型A,在更新期间不需要锁定插入,因为结果仍然是1。只有在没有类型A的行时才阻止插入。该怎么做?
谢谢!
【问题讨论】:
-
你试过SQL中的“事务”吗?我认为你可以使用它。此链接将帮助您“dev.mysql.com/doc/refman/5.7/en/commit.html”
-
你不能只更新 another_table SET field=(SELECT EXISTS...) 吗?
-
当然,任何锁都比更新更便宜。你的实际目标是什么?您可能想要的而不是使用显式锁定是
start transaction...commit
标签: mysql sql database-performance sqlperformance