嵌套表替代触发器

create or replace type emp_obj as object(emp表中所有的字段。);

create or replace type emp_tab_type as table of emp_obj;

create or replace view dept_emp_view as 

    select deptno,dname,loc,

   cast(multiset(select * from emp where deptno=dept.deptno) as emp_tab_type) emplst from dept;

cast(mutiset(as)):将mutiset集合中的所有元素转换为  emp_tab_type 的嵌套表类型。

创建嵌套表替代触发器。

create or replace trigger dept_emp_innerview

   instead of insert on nested table emplst of dept_emp_view

begin

  insert into emp(deptno,empno,ename,job,mgr,hiredate,sal,comm) values(:parent.deptno,:new.empno,:new.ename,:new.job,:new.mgr,:new,hiredate,:new.sal,:new.comm);

parent获取嵌套表父行的deptno。

向嵌套表中插入数据。

insert into table(select emplst from dept_emp_view where deptno=10) values(8003,'四爷','皇上',null,sysdate,5000,500,10);

猜你喜欢

转载自www.cnblogs.com/xsqoforacle/p/9572685.html