正如 Oracle 所说:列列表对于此触发器类型无效。省略它。
示例表和触发器:
SQL> create table bb_basketitem (idproduct number,quantity number);
Table created.
SQL> create or replace trigger user_defined_error
2 before insert on bb_basketitem
3 for each row
4 begin
5 if (:new.idproduct = 3 or :new.idproduct = 9)
6 and :new.quantity < 10
7 then
8 raise_application_error(-20000,'Please enter quantity greater than 10.');
9 end if;
10 end;
11 /
Trigger created.
测试:
SQL> insert into bb_basketitem(idproduct,quantity) values (3,5);
insert into bb_basketitem(idproduct,5)
*
ERROR at line 1:
ORA-20000: Please enter quantity greater than 10.
ORA-06512: at "SCOTT.USER_DEFINED_ERROR",line 5
ORA-04088: error during execution of trigger 'SCOTT.USER_DEFINED_ERROR'
SQL> insert into bb_basketitem(idproduct,20);
1 row created.
SQL>
列列表对 before update
触发器有意义:
SQL> create or replace trigger trg_bu_bbb
2 before update of quantity on bb_basketitem
3 for each row
4 begin
5 if (:new.idproduct = 3 or :new.idproduct = 9)
6 and :new.quantity < 10
7 then
8 raise_application_error(-20001,'Please enter quantity greater than 10.');
9 end if;
10 end;
11 /
Trigger created.
SQL> update bb_basketitem set quantity = 1;
update bb_basketitem set quantity = 1
*
ERROR at line 1:
ORA-20001: Please enter quantity greater than 10.
ORA-06512: at "SCOTT.TRG_BU_BBB",line 5
ORA-04088: error during execution of trigger 'SCOTT.TRG_BU_BBB'
SQL>
本文链接:https://www.f2er.com/33518.html