0
我正在使用下面的查詢來實現此目的。在執行查詢來創建觸發器時,它的工作正常,但是當我在創建觸發器的表中插入某些內容時,它會引發錯誤。如何創建觸發器將所有在數據庫上運行的查詢存儲到表中?
create or replace trigger TESTTRIG
after insert
or update
or delete
on sourcetable
declare
v_text varchar2(1000);
v_mask varchar2(100);
cursor c1
is
select sql_text
from v$open_cursor
where sid = sys_context('USERENV','SID')
order by last_sql_active_time desc;
begin
v_mask := case
when inserting then 'INSERT +INTO +<TABLE_NAME>(|\()'
when updating then 'UPDATE +<TABLE_NAME> '
else 'DELETE(+FROM)? +<TABLE_NAME>(|$)'
end;
open c1;
loop
fetch c1
into v_text;
exit when c1%notfound;
if regexp_like(v_text,v_mask,'i')
then
insert into targettable('TIME_EXEC','SQL_TEXT') values (SYSDATE,v_text);
exit;
end if;
end loop;
close c1;
end TESTTRIG;
/.
我得到一個ORA-04098插入任何東西到「sourcetable」table.Please幫助。
ORA消息已清除:觸發器無法編譯/無效。修復觸發器,消息消失。 – jwenting
你能告訴我什麼是觸發器的錯誤。我是一個觸發器的完全新手,並非常感謝您可以提供的任何幫助。 –