相关疑难解决方法(0)

MySQL:事务与锁定表

我对事务与锁定表有点混淆,以确保数据库完整性,并确保SELECT和UPDATE保持同步,没有其他连接干扰它.我需要:

SELECT * FROM table WHERE (...) LIMIT 1

if (condition passes) {
   // Update row I got from the select 
   UPDATE table SET column = "value" WHERE (...)

   ... other logic (including INSERT some data) ...
}
Run Code Online (Sandbox Code Playgroud)

我需要确保没有其他查询会干扰并执行相同的操作SELECT(在连接完成更新行之前读取'旧值'.

我知道我可以默认LOCK TABLES table只确保一次只有一个连接正在执行此操作,并在完成后解锁它,但这看起来有点矫枉过正.在事务中包装它会做同样的事情(确保没有其他连接尝试相同的进程而另一个仍处理)?或者会更好SELECT ... FOR UPDATE还是SELECT ... LOCK IN SHARE MODE更好?

mysql sql locking transactions

102
推荐指数
5
解决办法
6万
查看次数

标签 统计

locking ×1

mysql ×1

sql ×1

transactions ×1