ORACLE 10G TRIGGER 实例
一个简单的trigger,实现当操纵员工表时自动将员工人数统计到部门表中。SQL> create table dept(dno int,dname varchar(20),population int);
表已创建。 SQL> create table emp(eid int,ename varchar2(20),dno int); 表已创建。 SQL> desc emp 名称 是否为空? 类型 ----------------------------------------- -------- ----------------------------EID NUMBER(38) ENAME VARCHAR2(20) DNO NUMBER(38) SQL> desc dept 名称 是否为空? 类型 ----------------------------------------- -------- ----------------------------DNO NUMBER(38) DNAME VARCHAR2(20) POPULATION NUMBER(38) SQL> insert into dept values (11,'sale',0); 已创建 1 行。 SQL> insert into dept values (12,'market',0); 已创建 1 行。 SQL> insert into dept values (13,'study',0); 已创建 1 行。 SQL> create or replace trigger trigger012after delete or insert or update on emp3for each row4begin5if inserting then --增加一个员工时,使对应部门人数加16update dept set population=population+17where dept.dno=:new.dno;8elsif deleting then --减少一个员工时,使对应部门人数减19update dept set population=population-1 10where dept.dno=:old.dno; 11elsif updating then --更改一个员工部门时 12update dept set population=population+1--现在的部门人数加1 13where dept.dno=:new.dno; 14update dept set population=population-1--使原部门人数减1 15where dept.dno=:old.dno; 16end if; 17end; 18/ 触发器已创建 SQL> select * from dept; DNO DNAME POPULATION---------- -------------------- ---------- 11 sale 0 12 market 0 13 study 0 SQL> insert into emp values (1001,'prajna',11); 已创建 1 行。 SQL> insert into emp values (1002,'sommer',12); 已创建 1 行。 SQL> insert into emp values (1003,'huihui',13); 已创建 1 行。 SQL> insert into emp values (1004,'kankan',12); 已创建 1 行。 SQL> insert into emp values (1005,'binbin',13); 已创建 1 行。 SQL> select * from dept; DNO DNAME POPULATION---------- -------------------- ---------- 11 sale 1 12 market 2 13 study 2 SQL> update emp set dno=12 where ename='binbin'; 已更新 1 行。 SQL> select * from dept; DNO DNAME POPULATION---------- -------------------- ---------- 11 sale 1 12 market 3 13 study 1 SQL> delete from emp where ename='sommer'; 已删除 1 行。 SQL> select * from dept; DNO DNAME POPULATION---------- -------------------- ---------- 11 sale 1 12 market 2 13 study 1
页:
[1]