测试结果:程序在开始执行before触发器时,已对该行加锁了。
SQL> conn sys/sys as sysdba;
已连接。
SQL> grant execute on dbms_lock to scott;
授权成功。
SQL> connect scott/tiger;
已连接。
SQL> CREATE OR REPLACE TRIGGER temp_air
2 before update ON emp
3 FOR EACH ROW
4 BEGIN
5 dbms_lock.sleep(200);
6 END;
7 /
触发器已创建
SQL> update emp set ename='TESTNAME' where empno=7902;
此时由触发器要等200秒,所以此处会等待200秒,
另开一个窗口:
SQL> select * from emp where empno=7902 for update;
发现被阻塞住了,说明程序在开始执行触发器时,已对该行加锁了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/15145533/viewspace-464428/ ,如需转载,请注明出处,否则将追究法律责任。