主题:
在MySQL中,是否有必要在BEGIN和COMMIT语句中使用FOR UPDATE,或者start和commit基本上是做同样的事情?
编辑:“开始/提交基本上与一系列'FOR UPDATE'相同吗?
答案 0 :(得分:4)
如果你想锁定select for update
行,你应该开始交易,在MySQL documentation我们可以看到:
请注意
使用SELECT FOR UPDATE锁定行以进行更新仅适用于 自动提交被禁用(通过START开始事务 TRANSACTION或通过将自动提交设置为0.如果启用了自动提交, 与规范匹配的行未锁定。
您可以在没有开始交易的情况下使用FOR UPDATE
,但这不安全......
答案 1 :(得分:0)
我的问题是BEGIN / COMMIT语句中的FOR UPDATE是否冗余。我想它不是..我想...因为BEGIN ... COMMIT只锁定写入,而不是读取。或许不是吗?