mysql instead of触发_Instead of触发器

INSTEAD OF触发器

创建一个Insert替代触发器,用于执行复杂视图更新(插入)操作

仅可用来执行多表关联的视图

若创建视图的语句中含有聚合函数等,则无法更新

create or replace view myview as

2  select e.empno,e.ename,e.job,e.sal,d.deptno,d.dname,d.loc

3  from emp e,dept d

4  where e.deptno=d.deptno and d.deptno=20

5  ;

create or replace trigger view_trigger

instead of insert on myview

for each row

declare

v_empCount number;

v_deptCount number;

begin

select count(empno) into v_empCount from emp where empno=:new.empno;

select count(deptno) into v_deptCount from dept where deptno=:new.deptno;

if v_deptCount=0 then

insert into dept(deptno,dname,loc) values(:new.deptno,:new.dname,:new.loc);

end if;

if v_empCount=0 then

insert into emp(empno,ename,job,sal,deptno)

values(:new.empno,:new.ename,:new.job,:new.sal,:new.deptno);

end if;

end;

/

insert into myview(empno,ename,job,sal,deptno,dname,loc) values(6688,'vdedu','clerk',2000,50,'teach','pekino');

创建一个UPDATE替代触发器

create or replace trigger view_trigger

2  instead of update on myview

3  for each row

4  begin

5      update emp set ename=:new.ename,job=:new.job,sal=:new.sal where empno=:new.empno;

6      update dept set dname=:new.dname,loc=:new.loc where deptno=:new.deptno;

7  end;

8  /

update myview set sal=900 where empno=7566;

1 row updated

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值