嵌套表替代触发器
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);