【案例一】
題目:--觸發器:
--新增員工資訊,流水號作為自動編號(通過序列生成),
--並且判斷如果工資小於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...