Oracle替代触发器

由于视图有可能是由多个表进行关联而成,这种情况下,直接通过更新视图来更新基表是不可行的,这个时候我们就可以通过替代触发器来工作了。

 

示例:

--准备操作

INSERT INTO DEPT(DEPTNO,DNAME,LOC) VALUES(60,'研发部','上海');

INSERT INTO EMP(EMPNO, ENAME,JOB,

                MGR,HIREDATE,SAL,

                COMM,DEPTNO)

              VALUES(1001,'贾宝玉','程序员',7788,TO_DATE ('2013-02-03','YYYY-MM-DD'),8000,1000,60);

            

CREATE VIEW emp_info_view

 AS

 SELECT E.EMPNO,E.ENAME,E.JOB,E.SAL,D.DNAME,D.LOC

 FROM EMP e JOIN DEPT d ON e.deptno=d.deptno ;

 

 SELECT * FROM emp_info_view

 

--创建替代触发器

create or replace trigger emp_info_view_trigger instead of update 

    on emp_info_view for each row 

 begin 

  update dept set dname=:new.dname,loc=:new.loc

  where dname=:new.dname; 

 end;

--更新视图

update emp_info_view set loc='杭州' where dname='研发部'

--查询结果

SELECT * FROM dept

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值