【Oracle強化】⑨第九章 觸發器
阿新 • • 發佈:2019-02-07
1.編寫觸發器實現如下功能:
對修改職工工資進行合法性檢查:
a.修改後的工資大於修改前的工資
b.工資增量不能超過原工資的10%
c.目前部門號為10號部門的員工不漲工資
2.用觸發器生成一個主鍵,員工編號的主鍵
‘NEU’ +員工參加工作時間+員工序號
neu2012033111125
自動生成新增主鍵。
3、建立一個表tmp_table,包含empno、ename、sal_old、sal_new、job五列資訊
在emp表上建立一個update行觸發器,當新的薪水小於原有的薪水時,在tmp_table表中填加一行資訊。
對修改職工工資進行合法性檢查:
a.修改後的工資大於修改前的工資
b.工資增量不能超過原工資的10%
c.目前部門號為10號部門的員工不漲工資
2.用觸發器生成一個主鍵,員工編號的主鍵
‘NEU’ +員工參加工作時間+員工序號
neu2012033111125
自動生成新增主鍵。
3、建立一個表tmp_table,包含empno、ename、sal_old、sal_new、job五列資訊
在emp表上建立一個update行觸發器,當新的薪水小於原有的薪水時,在tmp_table表中填加一行資訊。
9.2DML觸發器 9.2.1DML語句觸發器 1、 CREATE OR REPLACE PROCEDURE secure_dml IS BEGIN IF (TO_CHAR(SYSDATE, 'DY') in ('星期六','星期日')) or (TO_CHAR (SYSDATE, 'HH24:MI') NOT BETWEEN '08:45' AND '17:30') THEN RAISE_APPLICATION_ERROR (-20205, '你只能在正常的辦公時間改變資料'); END IF; END secure_dml; 1)、 CREATE OR REPLACE TRIGGER secure_prod BEFORE INSERT OR UPDATE OR DELETE ON dept BEGIN secure_dml; END secure_prod; 2)、 INSERT INTO dept VALUES (50,’dep50’,’shenyang’); 9.2.2DML行觸發器 1、 Create table tmp_table( Empno number(4), Ename varchar2(10), Sal_old number(7,2), Sal_new number(7,2), Job varchar2(10)); 2、 Create or replace trigger sal_emp after update on emp for each row Begin if(:new.sal <:old.sal) then insert into tmp_table values(:old.empno,:old.ename, :old.sal,:new.sal,:old.job); end if; End; update emp set sal=2000;