假设表test 有两列col1和col2:
不太清楚以下两个sql语句的区别:
(1)select * from test for update;
(2)select * from test for update of col1;
第一句是对所有行加锁,其他事务无法修改数据;
第二句我本来以为只是不能修改col1列的值,但我在oracle9.2.0.1.0下测试,col2列的值也不能修改.
那两句到底有什么区别?
--------------
for update一般都是在游标中使用的
当查询语句中只有一个表是,直接用select * from table1 for update这样就会在表上加锁
在查询时关联了几个表,且只想更新其中一个或几个表就可以用of子句来进行相关表的锁定
select a.col1,b.col2 from a,b where a.id=b.id for update of b.col2 这样对于b表加了锁面a表没有加锁。