for update

对比区别:
  1 select * from TTable1 for update 锁定表的所有行,只能读不能写
  2 select * from TTable1 where pkid = 1 for update 只锁定pkid=1的行
  3 select * from Table1 a join Table2 b on a.pkid=b.pkid for update 锁定两个表的所有记录
  4 select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update 锁定两个表的中满足条件的行
  5 select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid 只锁定Table1中满足条件的行
  

for update 是把所有的表都锁点 for update of 根据of 后表的条件锁定相对应的表

摘自:http://blog.sina.com.cn/s/blog_6165052c01017rf5.html

原文地址:https://www.cnblogs.com/danwuxinbolg/p/4578995.html