在事务期间插入mysql时,在记录上放置一个锁

时间:2013-12-27 21:33:37

标签: mysql sql insert transactions locking

如何在我插入MySQL中的表中的行上放置共享锁或独占锁?

我想确保如果我在事务期间插入一行,则其他事务无法在事务的其余部分中更改或删除该行。

干杯!

2 个答案:

答案 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)

您不需要,因为在事务完成之前,事务中没有任何操作(包括创建记录)实际上在事务之外是可见的。