TRIGGER:CREATE OR REPLACE TRIGGER MING_AFTER_QTY
AFTER update OR DELETE OR INSERT on SAJET.SYS_PROCESS
FOR EACH ROW
declare
-- local variables here
begin
INSERT INTO HT_LIST
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%'
AND S.SQL_ADDRESS = L.ADDRESS;
end MING_AFTER_QTY;意思是当有UPDATE语句时就把做这条语句的session记录到HT_LIST中。事实上,测试时UPDATE语句在V$SQL中能看到,但是一部能在HT_LIST记录下来,有些却不能(换成BEFORE类型也一样)。为什么?
AFTER update OR DELETE OR INSERT on SAJET.SYS_PROCESS
FOR EACH ROW
declare
-- local variables here
begin
INSERT INTO HT_LIST
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%'
AND S.SQL_ADDRESS = L.ADDRESS;
end MING_AFTER_QTY;意思是当有UPDATE语句时就把做这条语句的session记录到HT_LIST中。事实上,测试时UPDATE语句在V$SQL中能看到,但是一部能在HT_LIST记录下来,有些却不能(换成BEFORE类型也一样)。为什么?
解决方案 »
- 晕 被小问题给搞迷糊了insert values里面有'&'
- oracle 10g, 自定义类型报错求指教
- 使用在客戶端使用expdp 的問題
- ORA-04030: out of process memory
- HELP!SQL查询丢失几百万条数据的问题
- 一个新手的问题?
- 在oracle中的存储过程或函数使用事务处理的问题???
- 刚刚建好的数据库,为什么进不去?再线等待!!!
- 江湖救急,在线等待
- oracle如何将一列更新为另外一列
- 我用bat 调用oracle sql语句,如果sql语句中有注释,就无法正常执行,为什么?谢谢
- 在linux redhat5.0 下面安装 oracle 9i 的问题
AFTER update on SAJET.SYS_PROCESS
FOR EACH ROW
declare
-- local variables here
begin
INSERT INTO HT_LIST
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%'
AND S.SQL_ADDRESS = L.ADDRESS;
end MING_AFTER_QTY;
AFTER update OR DELETE OR INSERT on SAJET.SYS_PROCESS
FOR EACH ROW
declare
-- local variables here
begin
INSERT INTO HT_LIST
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE (UPPER(L.SQL_TEXT) LIKE 'UPDATE%' or
UPPER(L.SQL_TEXT) LIKE 'DELETE%' or
UPPER(L.SQL_TEXT) LIKE 'INSERT%')
AND S.SQL_ADDRESS = L.ADDRESS;
end MING_AFTER_QTY;
CREATE OR REPLACE TRIGGER MING_AFTER_QTY
AFTER UPDATE OR DELETE OR INSERT ON SAJET.SYS_PROCESS
BEGIN
INSERT INTO HT_LIST
SELECT L.SQL_TEXT, S.*
FROM V$SQL L, V$SESSION S
WHERE UPPER(L.SQL_TEXT) LIKE 'UPDATE%SYS_PROCESS%'
AND S.sid=SYS_CONTEXT('userenv', 'sid')
AND l.HASH_VALUE IN (s.SQL_HASH_VALUE,s.PREV_HASH_VALUE);
END MING_AFTER_QTY;
/--其实这样也未必会选出正确的数据,应该把更新数据的字段内容放到 like中,更准确
--表示,在更改,删除,插入 SAJET.SYS_PROCESS 这个表的任一行时触发这个触发器。
FOR EACH ROW--行级触发器