对比区别:
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