如何在我插入MySQL中的表中的行上放置共享锁或独占锁?
我想确保如果我在事务期间插入一行,则其他事务无法在事务的其余部分中更改或删除该行。
干杯!
答案 0 :(得分:1)
您的桌子需要使用InnoDB或等效的。
然后你做:
START TRANSACTION;
SELECT something FROM sometable WHERE somecolumn = somekey
FOR UPDATE;
然后修改相关行。最后,
COMMIT;
你已经完成了。
如果您需要一致阅读,可以改为使用:
SELECT something FROM sometable WHERE somecolumn = somekey
LOCK IN SHARE MODE;
答案 1 :(得分:1)
您不需要,因为在事务完成之前,事务中没有任何操作(包括创建记录)实际上在事务之外是可见的。