这题涉及到变化表的问题,可采用两个触发器来实现,一个语句级,一个行级,行级触发器先获取插入记录的laneno值,并放到包中,以供语句级触发器使用 1。创建包 create or replace package pkg_1 as newlaneno number(3); end;create or replace package pkg_1 body as end;2。创建行级触发器 create or replace trigger trigger_2 before insert or update on tableA for each row declare begin pkg_1.newlaneno:=:new.laneno; end;3。创建语句级触发器 create or replace trigger trigger_1 after insert or update on tableA declare talbeA_rec tableA%rowtype; cursor tableA_cur is select * from tableA where laneno=pkg_1.newlaneno; begin for tableA_rec in tableA_cur loop case tableA_rec.tab_code when 1 then insert into tableB(currver1,futuver1) values(tableA_rec.currver,tableA_rec.futuver); when 2 then insert into tableB(currver2,futuver2) values(tableA_rec.currver,tableA_rec.futuver); when 3 then insert into tableB(currver3,futuver3) values(tableA_rec.currver,tableA_rec.futuver); (略) end case; end loop; end; 一切OK
1。创建包
create or replace package pkg_1 as
newlaneno number(3);
end;create or replace package pkg_1 body as
end;2。创建行级触发器
create or replace trigger trigger_2
before insert or update
on tableA
for each row
declare
begin
pkg_1.newlaneno:=:new.laneno;
end;3。创建语句级触发器
create or replace trigger trigger_1
after insert or update
on tableA
declare
talbeA_rec tableA%rowtype;
cursor tableA_cur is
select * from tableA where laneno=pkg_1.newlaneno;
begin
for tableA_rec in tableA_cur
loop
case tableA_rec.tab_code
when 1 then
insert into tableB(currver1,futuver1) values(tableA_rec.currver,tableA_rec.futuver);
when 2 then
insert into tableB(currver2,futuver2) values(tableA_rec.currver,tableA_rec.futuver);
when 3 then insert into tableB(currver3,futuver3) values(tableA_rec.currver,tableA_rec.futuver);
(略)
end case;
end loop;
end;
一切OK