oracle行級insert觸發器的寫法及部分知識點

工作中第一次用到觸發器,特地總結留下記錄,以做參考

create or replace trigger count2013
before insert            --可以使用beforeafter確定觸發時機,觸發事件作可以是insertdelete,等其他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;   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章