在MySQL中,是否有必要在BEGIN和COMMIT语句中使用FOR UPDATE?

时间:2013-07-08 04:13:48

标签: mysql

主题:

在MySQL中,是否有必要在BEGIN和COMMIT语句中使用FOR UPDATE,或者start和commit基本上是做同样的事情?

编辑:“开始/提交基本上与一系列'FOR UPDATE'相同吗?

2 个答案:

答案 0 :(得分:4)

如果你想锁定select for update行,你应该开始交易,在MySQL documentation我们可以看到:

  

请注意

     

使用SELECT FOR UPDATE锁定行以进行更新仅适用于   自动提交被禁用(通过START开始事务   TRANSACTION或通过将自动提交设置为0.如果启用了自动提交,   与规范匹配的行未锁定。

您可以在没有开始交易的情况下使用FOR UPDATE,但这不安全......

答案 1 :(得分:0)

我的问题是BEGIN / COMMIT语句中的FOR UPDATE是否冗余。我想它不是..我想...因为BEGIN ... COMMIT只锁定写入,而不是读取。或许不是吗?