您的位置:首页 > 数据库 > Oracle

Oracle 行级触发器学习

2009-10-14 21:14 375 查看
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表

触发器中不能写rollback也不能写DBMS_OUTPUT.PUTLINE
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: