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

  • 相关阅读:
    SpringBoot常用注解(二)
    SpringBoot常用注解(一)
    Spring Dl解释
    Spring 入门程序
    Spring 入门
    JUnit-4.13使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
    测试中Android与IOS分别关注的点
    python包中__init__.py的作用
    python自动发送测试报告(五)
    搭建一个有条理的项目(四)
  • 原文地址:https://www.cnblogs.com/kawashibara/p/9047644.html
Copyright © 2011-2022 走看看