zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    vue工作篇
    idea快捷键
    idea怎么随时随地调整字体大小
    idea配置maven
    idea启动加速
    idea配置tomcat
    idea设置哪个浏览器打开
    jsonArray和jsonObject的理解
    多文件上传保存到本地服务器
    并发编程
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9047644.html
Copyright © 2011-2022 走看看