plsql 视图中 为什么使用替代触发器

/*
什么是视图?
      视图:数据库对象,存的是一个查询命令;当作一个虚拟的数据表来使用;
      应用场景:
      简化查询操作;不能直接在视图上进行create,insert,update操作;
创建视图?
    需要管理员身份登录
    创建视图并授权给用户   
    grant create view to scott; 
*/
--3. 视图中使用替代触发器? 
-- 由于视图有可能是由多个表进行关联而成,
--这种情况下,直接通过更新视图来更新基表是不可行的,这个时候我们就可以通过替代触发器来工作了。

create or replace view v1   --1.创建视图
as
  select d.deptno,d.dname,e.empno,e.ename 
  from dept d,emp e
  where d.deptno=e.deptno;
  
  --模拟录入视图数据 (直接在视图上操作,默认报错的)  解决方法 使用替代触发器
  insert into v1(deptno,dname,empno,ename)values
  (13,'公关部',9527,'哈哈');
  
  -- 创建替代触发器
  create or replace trigger tg4
    instead of insert on v1 for each row    -- 替代触发器的定义方式   instead of insert on v1 for each row
  declare
  
  begin
    insert into dept(deptno,dname)values(:new.deptno,:new.dname);
    insert into emp(empno,ename)values(:new.empno,:new.ename);
  end;

猜你喜欢

转载自www.cnblogs.com/ZXF6/p/11240433.html
今日推荐