SQL> create table test(t number);
表已创建。
SQL>
SQL> create or replace view bb as select * from test;
视图已建立。
SQL>
使用建立替代触发器,并在其中应用自治事务(此种触发器只能应用在view)
SQL> show err
没有错误。
SQL> create or replace trigger aa
2 instead of insert or delete or update on bb
3 declare
4 pragma autonomous_transaction;
5 begin
6 if INSERTING then
7 insert into test values(:new.t);
8 commit;
9 elsif UPDATING then
10 update test
11 set t=:new.t
12 where t=:old.t;
13 commit;
14 else
15 delete from test
16 where t=:old.t;
17 commit;
18 end if;
19
20 -- commit;
21 end;
22 /
触发器已创建
SQL> show err
没有错误。
SQL>
SQL> select * from test;
未选定行
SQL>
SQL> create or replace trigger aaa
2 before insert or delete or update on test
3 begin
4 raise_application_error(-20000,'Cannot Insert/Update/Delete Directly.');
5 end;
6 /
触发器已创建
已用时间: 00: 00: 00.40
SQL>