【发布时间】:2015-03-08 02:16:07
【问题描述】:
我对我们使用SELECT FOR UDPATE 的目的有疑问?它的具体作用是什么?
我有 2 个表,我需要从表中选择行并更新相同的行。
例如:
选择查询
SELECT * from t1 WHERE city_id=2 for update
更新查询
UPDATE t1 SET final_balance = final_balance - 100 WHERE city_id ='2'
我的问题 - 这真的会在我的更新完成之前锁定读取操作吗,或者它到底处理了什么?
我的想法是在我的更新完成之前,没有人可以读取/更新这些行。
谢谢!
【问题讨论】:
-
"我的想法是没有人可以从这些行读取/更新" - 这是错误的。行锁不会阻止 读取 访问(例如,没有
for update的普通select)
标签: mysql transactions innodb select-for-update