兩個經典的Oracle觸發器示例

2021-08-30 09:53:06 字數 1766 閱讀 1735

【案例一】

題目:--觸發器:

--新增員工資訊,流水號作為自動編號(通過序列生成),

--並且判斷如果工資小於0,則改為0;如果大於10000,則改為10000。

create table emp2(

e_id number,

e_no number,

e_name varchar2(20),

e_sal number

)select * from emp2;

create sequence seq_trg_id;

insert into emp2(e_id,e_no,e_name,e_sal) values(seq_trg_id.nextval,7788,'章子',

1000000000000)

insert into emp2(e_id,e_no,e_name,e_sal) values(seq_trg_id.nextval,7788,'章子怡',-10)

create or replace trigger trg_add_emp_info

before insert

on emp2

for each row

declare

-- local variables here

begin

select seq_trg_id.nextval into :new.e_id from dual;

if :new.e_sal < 0 then

:new.e_sal := 0;

elsif :new.e_sal > 10000 then

:new.e_sal := 10000;

end if;

end;

【 案例二】

題目:--擴充練習:

--為emp建立觸發器,將刪除的記錄放到e***表中(autoid,deptno,empno,ename,del_rq-刪除日期)

--測試**

create table e***(

autoid number primary key,

deptno number,

empno number,

ename varchar2(20),

del_rq date

)create sequence seq_trg_del_autoid;

insert into emp

(empno, ename, deptno)

values

(114, '阿嬌', 10);

commit;

select * from emp;

delete emp where empno = 114;

select * from e***;

答案:create or replace trigger trg_del_emp_info

before delete

on emp

for each row

declare

-- local variables here

begin

insert into e***(autoid,deptno,empno,ename,del_rq)

values(seq_trg_del_autoid.nextval,:old.deptno,:old.empno,:old.ename,sysdate);

end;

兩個經典的Oracle觸發器示例

案例一 題目 觸發器 新增員工資訊,流水號作為自動編號 通過序列生成 並且判斷如果工資小於0,則改為0 如果大於10000,則改為10000。create table emp2 e id number,e no number,e name varchar2 20 e sal number selec...

兩個經典的Oracle觸發器示例

from 案例一 題目 觸發器 新增員工資訊,流水號作為自動編號 通過序列生成 並且判斷如果工資小於0,則改為0 如果大於10000,則改為10000。create table emp2 e id number,e no number,e name varchar2 20 e sal number ...

兩個經典的Oracle觸發器示例

案例一 題目 觸發器 新增員工資訊,流水號作為自動編號 通過序列生成 並且判斷如果工資小於0,則改為0 如果大於10000,則改為10000。create table emp2 e id number,e no number,e name varchar2 20 e sal number selec...