♣
题目部分
在Oracle中,显式锁和隐式锁的区别有哪些?
♣
答案部分
Oracle锁被自动执行,并且不要求用户干预的锁为隐式锁,或称为自动锁。对于SQL语句而言,隐式锁是必须的,依赖于被请求的动作。隐式锁是Oracle中使用最多的锁,执行任何DML语句都会触发隐式锁。通常用户不必声明要对谁加锁,而是Oracle自动为操作的对象加锁。用户可以使用命令明确的要求对某一对象加锁,这就是显式锁。显式锁定很少使用。
显式锁主要使用LOCK TABLE语句实现,LOCK TABLE没有触发行锁,只有TM表锁,主要有如下几种语句:
LOCK TABLE TABLE_NAME IN ROW SHARE MODE NOWAIT; --2:RS
LOCK TABLE TABLE_NAME IN SHARE UPDATE MODE; --2:RS
LOCK TABLE TABLE_NAME IN ROW EXCLUSIVE MODE NOWAIT; --3:RX
LOCK TABLE TABLE_NAME IN SHARE MODE; --4:S
LOCK TABLE TABLE_NAME IN SHARE ROW EXCLUSIVE MODE; --5:SRX
LOCK TABLE TABLE_NAME IN EXCLUSIVE MODE NOWAIT; --6:X
本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗