大家注意,是ORACLE的问题!!!!一下语句ORACLE怎么写
现在有一个表
A(id,col1,col2)
表B (id,col3)
函数 fun(参数id)
创建一个insert 一个update触发器如果发生以上操作,执行语句 : insert into 表B(id,col3) values(id,fun(参数id) )
现在有一个表
A(id,col1,col2)
表B (id,col3)
函数 fun(参数id)
创建一个insert 一个update触发器如果发生以上操作,执行语句 : insert into 表B(id,col3) values(id,fun(参数id) )
insert into B(id,col3) values(:new.id,fun(:new.id));end;这样?
--你在触发器中用函数去获取更新列的值是做不到的,因你获取时,当前的记录已经改变了
--例:
create table A(
id int,
col1 varchar2(20),
col2 varchar2(20)
);
create table B(
id int,
col3 varchar2(20));create or replace function fun(p_id int)
return varchar2
as
retval varchar2(1000);
begin
select nvl(col1,'')||nvl(col2,'') into retval from A where id=p_id;
return retval;
end;
/create or replace trigger A_ins_upd
after insert or update
on A
for each row
begin
--insert into B values(:new.id,fun(:new.id));
insert into B values(:new.id,nvl(:new.col1,'')||nvl(:new.col2,''));
end;
/insert into A values(1,'2','3');select * from B;update A set col1='4',col2='5' where id=1;select * from B;
create or replace trigger A_ins_upd
after insert or update
on A
for each row
begin
insert into B values(:new.id,fun(:new.id));end;