ORACLE查出表所有的触发器

发布网友 发布时间:2022-04-22 19:40

我来回答

2个回答

懂视网 时间:2022-05-05 23:15

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;

linux

热心网友 时间:2022-05-05 20:23

查all_triggers表得trigger_name
select trigger_name from all_triggers where table_name='XXX';

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com