DB2和Oracle的锁机制
1.DB2的锁
具体详见转贴
http://www-900.ibm.com/cn/support/nav/200402/p45-1.shtml2.Oracle的锁
1>行级锁:tx
行被排他锁定;
在某行的锁被释放之前,其他用户不能修改此行;
使用commit或者rollback命令释放;
使用insert,update的时候自动被上锁;
用select ...for update语句获得行级锁:被加锁的对象是所有
被select 到的行;
防止其他用户修改此行,但可以查询;
具体的形式为:
如果锁定所有列:select..for update;
锁定特定列:select ..for update of ename;
不合理的是:当一个用户锁定时,别的用户不知道,只会等;
所以用select ..for update wait(second):
超过secong秒后加锁的用户还没有解锁的话,
其他等待也尝试加锁的的用户就会得到一个错误信息;
2>表级锁:tm
可以设置为三种模式:Lock table userID.tablename in [] mode;
共享:其他用户只能查询,不能更新,删除,插入;
a.多个用户可以同时对同一个表设置共享锁;
b.共享更新:in share update mode;
锁定要被更新的行,其他用户可以同时查询,
插入,更新未被锁定的行,即未被更新的行;
等于select..for update;
允许多个用户同时锁定表中不同的行;
c.排他:
仅允许其他用户查询,不允许插入,删除,更新;
在同时间仅允许一个用户在表上放置排他锁;
如果加上nowait的话,如果发现该表已经被锁定,
就不再等待,立即返回一个错误信息;