create table test1(
id number(15) not null,
value1 number(15,2) null
)create table test2(
id number(15) not null,
value2 number(15,2) null
)insert into test1 (id,value1) values (1,12.5) 请问该如何写?我尝试写了一个但是不行。
create or replace trigger tig_test1
after insert on test1
for each row
declare sumv number(15,2);
begin
select sum(value1) into sumv from test1 where id=:old.id;
insert into test2 (value2) values (sumv);
end tig_test1;
id number(15) not null,
value1 number(15,2) null
)create table test2(
id number(15) not null,
value2 number(15,2) null
)insert into test1 (id,value1) values (1,12.5) 请问该如何写?我尝试写了一个但是不行。
create or replace trigger tig_test1
after insert on test1
for each row
declare sumv number(15,2);
begin
select sum(value1) into sumv from test1 where id=:old.id;
insert into test2 (value2) values (sumv);
end tig_test1;
create or replace trigger tig_test1
after insert on test1
for each row
declare
sumv number;
PRAGMA AUTONOMOUS_TRANSACTION;
begin
select sum(nvl(value1,0)) into sumv from test1 where id=:new.id;
insert into test2 (value2) values (sumv);
commit;
end;
问题:
1、假如test1表没有id=1的记录,然后我插入一条id=1的记录,结果test2表中的value2为空!
2、假如test1表存在id=1的记录,然后我再插入一条id=1的记录,结果test2表中的value2只是以前记录的和,而不包括我插入的这一条!
after insert似乎没起作用,我这么写是我要的结果
select nvl(sum(nvl(value1,0)),0)+:new.value1 into sumv from test1 where id=:new.id;
不解
期待高手指教
select sum(nvl(value1,0)) into sumv from test1 where id=:new.id;
这个语句不会包括新插入的这一条。所以你需要自己加上建议最好改为实体化视图