對修改職工工資進行合法性檢查:
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;