oracle行級insert觸發器的寫法及部分知識點
阿新 • • 發佈:2019-02-09
工作中第一次用到觸發器,特地總結留下記錄,以做參考
create or replace trigger count2013
before insert --可以使用before或after確定觸發時機,觸發事件作可以是insert,delete,等其他dml語句和ddl語句等
on rec_employee_salary --確定觸發的表
for each row --行級觸發,省略則是語句級觸發
when (new.term =201706 and new.pksi = 2013) --觸發該觸發器的條件
declare --可以利用declare 宣告所需變數
v_pkorg varchar2(20);
v_orgScore number;
begin
if inserting then --判斷如果是插入資料操作則進入if語句
--獲取該支行人員的所屬機構,以及該機構的網點考核得分
select emp.pkorg into v_pkorg from (select * from rec_employee_salary where pksi = 201706 and pksi = 2013) empsal
inner join dic_employee emp
on empsal.pkemp = emp.pkemp;
select salarystandard into v_orgScore from dic_salary_standard where pksi = 5011 and pkemp = v_pkorg;
--判斷該人員屬於哪個機構
if v_pkorg in(14050702800,14050701300,14050700600,14050702400) then
:new.salary :=:new.salary+500*v_orgScore*0.01;
elsif v_pkorg in(14050701000,14050700700,14050701400,14050701900,14050701600,14050702700) then
:new.salary :=:new.salary+700*v_orgScore*0.01;
end if;
end if;
end;