千家信息网

UPDATE类型的触发器的重启动现象

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,SQL_1> create table mytest(id int );表已创建。SQL_1>insert into mytest select 1 from dual;已创建 1 行。create
千家信息网最后更新 2025年02月03日UPDATE类型的触发器的重启动现象

SQL_1> create table mytest(id int );


表已创建。


SQL_1>insert into mytest select 1 from dual;


已创建 1 行。


create or replace trigger tri_mytest_u before update on mytest for each row

begin

dbms_output.put_line('old_value: '||:OLD.id);

dbms_output.put_line('new_value: '||:NEW.id);

5 end;

6 /


触发器已创建


SQL_1>show errors;

没有错误。

SQL_1>update mytest set id=id+1;

old_value: 1

new_value: 2


已更新 1 行。


SQL> set serveroutput on size 20000

SQL> set sqlprompt SQL_1


在新窗口2执行:

-------------------------------

SQL> set serveroutput on size 20000

SQL> set sqlprompt SQL_2

SQL_2>update mytest set id=id+1;


---------------------------------



SQL_1>commit;


提交完成。


窗口2执行结果:

-------------------------


SQL_2>update mytest set id=id+1;

old_value: 1

new_value: 2

old_value: 2

new_value: 3


已更新 1 行。


SQL_2>select * from mytest;


ID

----------

3


结论:update的触发器在更新数据时,如果发生等待则会重新启动去读已提交的事物信息.


0