orcale触发器

Oracle 触发器有语句级触发器和行级触发器

语句级触发器  当删除部门表中的部门号时,同时删除掉员工表中部门号为:old.deptno的记录

create or replace trigger del_dept_id
after delete on dept
for each row
begin
delete from emp where deptno=:old.deptno;
end;

当往部门表插入时,同时在员工表中插入一句,其中:new.deptno 为插入的部门编号

create or replace trigger insert_dept
after insert on dept
for each row
begin
insert into emp(empno,ename,job,mgr,sal,hiredate,deptno) values('1234','JAMES','job',7566,3456,sysdate,:new.deptno);
end;

修改时:

 create or replace trigger update_dept
 after update on dept 
 for each row
 begin
 update emp set deptno=:new.deptno  where deptno=:old.deptno;
 end;

/

上面的new 表和old表是在内存当中的

我们对哪个表进行了delete那么old表就和他的结构一样
我们对哪个表进行了insert那么new表就和他的结构一样
插入数据时候先插入到new表中,然后在插入实际的表中
删除数据时候先把数据放在old表中,提交后在从old表中删除

insert涉及new表
delete涉及old表
update涉及old和new表

混合类型触发器:

Inserting,deleting,updating三个谓词可以分别指示当前操作到底是哪个;

create or replace trigger hunhetrigger

before insert or update or delete on student

for each row

begin

    if inserting or updating then

              dbms_output.put_line('insert le.........');

    end if;

    if deleting then

              dbms_output.put_line('delete le .......');

    end if;

end;

/

猜你喜欢

转载自bigdragon.iteye.com/blog/1426402