exam:
create or replace trigger audit_trigger
before insert or update on pl_purchase
for each row
declare
no_name_change exception;
quant_change number(5):=0;
begin
if (updating and (:new.product_name<>:old.product_name))
then
raise no_name_change;
end if; if (((updating) and (:old.order_number is null))
or
((inserting) and (:new.order_number is null)))
then
select order_num_seq.nextval
into :new.order_number
from dual;
end if; if (updating)
then
quant_change:=:new.quantity-:old.quantity;
else
quant_change:=:new.quantity;
end if; insert into pl_audit
values(:new.order_number,
:new.salesperson,
user,
userenv('terminal'),
quant_change,
sysdate);
exception
when no_name_change
then
dbms_output.put_line('change of product name not allowed');
dbms_output.put_line('aborting and resetting to ole values');
:new.product_name:=:old.product_name;
:new.salesperson:=:old.salesperson;
:new.order_number:=:old.order_number;
:new.quantity:=:old.quantity;
end audit_trigger;
/
create or replace trigger audit_trigger
before insert or update on pl_purchase
for each row
declare
no_name_change exception;
quant_change number(5):=0;
begin
if (updating and (:new.product_name<>:old.product_name))
then
raise no_name_change;
end if; if (((updating) and (:old.order_number is null))
or
((inserting) and (:new.order_number is null)))
then
select order_num_seq.nextval
into :new.order_number
from dual;
end if; if (updating)
then
quant_change:=:new.quantity-:old.quantity;
else
quant_change:=:new.quantity;
end if; insert into pl_audit
values(:new.order_number,
:new.salesperson,
user,
userenv('terminal'),
quant_change,
sysdate);
exception
when no_name_change
then
dbms_output.put_line('change of product name not allowed');
dbms_output.put_line('aborting and resetting to ole values');
:new.product_name:=:old.product_name;
:new.salesperson:=:old.salesperson;
:new.order_number:=:old.order_number;
:new.quantity:=:old.quantity;
end audit_trigger;
/
您能带点中文说明一下吗?麻烦啦