oracle触发器查询统计本表,这次由于项目需要,实际动手演练了一把,达到了需要的效果,大致是插入数据后,统计表内和当前插入数
oracle触发器查询统计本表
这次由于项目需要,实际动手演练了一把,达到了需要的效果,大致是插入数据后,,统计表内和当前插入数据时间相同的个数。
采用行级触发器+语句级触发器。
--包
create or replace package updatecase as
type t_date is table of date index by binary_integer;
v_updatetime t_date;
v_row binary_integer := 0;
end;
--行级触发器
create or replace trigger tri_student_row
after insert or update or delete
on student
for each row
begin
updatecase.v_row := updatecase.v_row + 1;
if deleting then
updatecase.v_updatetime(updatecase.v_row) := :old.createtime;
else
updatecase.v_updatetime(updatecase.v_row) := :new.createtime;
end if;
end;
--语句级触发器
create or replace trigger tri_student
after insert or update or delete on student
declare
studentcount number(38,5);
begin
for v_loop in 1 .. updatecase.v_row loop
select count(*)
into studentcount from student t
where t.createtime = updatecase.v_updatetime(v_loop);
insert into personcount(comedate,count)values(updatecase.v_updatetime(v_loop),studentcount);
end loop;
updatecase.v_row := 0;
end;