我想查詢一個表以查看是否存在具有'A'類型的任何行。 所以我用這個SQL:Mysql如何在不鎖定的情況下執行此操作
SELECT EXISTS(select * from %T where type = 'A');
那麼我就需要另一個表的列值更新上述結果。爲了防止更新期間發生'A'類型的插入,我想使用鎖。但鎖定非常昂貴,有沒有其他的替代方法來做到這一點,而不鎖定?
如果我們必須使用鎖,我想如果表已經有類型A,在更新期間不需要鎖定插入,因爲結果仍然是1.只有當沒有類型A的行時才阻止插入。 怎麼做?
謝謝!
您是否嘗試過SQL中的「Transaction」?我想你可以使用它。此鏈接將幫助你「http://dev.mysql.com/doc/refman/5.7/en/commit.html」 –
你不能只更新another_table SET字段=(SELECT ... EXISTS)? – StanislavL
當然,任何鎖定都比進行更新要便宜。你的實際目標是什麼?你可能想,而不是有明確鎖定嘴硬是['開始transaction' ...'commit'](http://dev.mysql.com/doc/refman/5.7/en/commit.html) – wallyk