oracle的trigger,Session的问题(超难)有一个table的一个栏位(process_name),时常会被莫明奇妙的修改,现在做一个triger,作用是(1)保存修改前的数据,(2)追踪是哪个session做的。CREATE OR REPLACE TRIGGER MING_BEFORE_QTY
BEFORE update on SAJET.SYS_PROCESS --另外又定义了一个after型
FOR EACH ROW
declare
-- local variables here
begin
INSERT INTO HT_PROCESS(PROCESS_ID, PROCESS_NAME)
VALUES(:OLD.PROCESS_ID, :OLD.PROCESS_NAME);
INSERT INTO MING_QTY1
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%PROCESS%'
AND S.SQL_ADDRESS = L.ADDRESS;
end MING_BEFORE_QTY;HT_PROCESS能保存到修改前的数据,但是MING_QTY1却是空的(没有跟踪到相应的session)。但是在select * from V$SQL
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%PROCESS%'却能看到是那一条update语句.我已多次修改LIKE 'UPDATE%PROCESS%' 这一处语句,它们在V$SQL里能查到相应的SQL_TEXT,但在V$session里就是查不相应的session.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货