Article View: comp.databases.oracle.misc
Article #101Audit Trigger
From: Adriaan Nortje
Date: Wed, 22 Aug 2001 17:51
Date: Wed, 22 Aug 2001 17:51
48 lines
3069 bytes
3069 bytes
Hi
I'm trying to create a generic audit trigger (after update) which will
select from user_tab_colums all the columns of the table and then go
evaluate the :old. and :new. values for each colun to see whether there was
an updte done on the column and insert it into an audit table.
what I was thinking of doing, is something like this.
create or replace trigger audit_trigger
after update or insert ot delete on employees for each row
declare
cursor aud_cur is select column_name , column_type from user_tab_columns
where table_name = 'employees';
begin
if updating then
for aud_row in aud_cur loop
------here is my problem -----
if :old.aud_row.column_name <> :new.aud_row.column_name then
insert into audit_table values (:old.aud_row.column_name,
:new.aud_row.column_name)
--- bla, bla, bla
as you can see this will clearly not work. What needs to be done is that I
need the value of the column_name and somehow get the :old. and :new. value
for that column_name's value (if that makes any sense at all). In a normal
procedure I would have been able to select two values like these using
NATIVE DYNAMIC SQL, but as this is a trigger I can not and any attempt to
query the table again will result in a mutation error and then I still only
have one value (if you can get around the mutation)
Oracle's auditing features don'r allow for auditing of column specific
auditing and can only tell me that the table has been access for an update.
Also, passing the column_name to a external procedure (like Pro C++) would
result in errors and still I have no new and old values.
I've been trying to find a function in PL similar to Developer's namein
function which will do exactly what is required, but I haven't had any luck
yet.
So, PLEASE help me.
GREAT.
Technical Details
Message-ID:
<3b83f0b8$0$233@hades.is.co.za>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed1.cidera.com!Cidera!netnews.com!newsfeed.nyc.globix.net!infeed.is.co.za!feeder.is.co.za!hades.is.co.za!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fb53f,a1a681ba7adb1d04,start X-Google-Attributes: gidfb53f,public X-Google-Thread: f99a8,a1a681ba7adb1d04,start X-Google-Attributes: gidf99a8,public X-Google-Thread: fa4f9,a1a681ba7adb1d04,start X-Google-Attributes: gidfa4f9,public X-Google-Thread: f5464,a1a681ba7adb1d04,start X-Google-Attributes: gidf5464,public X-Google-ArrivalTime: 2001-08-22 10:50:12 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!newsfeed1.cidera.com!Cidera!netnews.com!newsfeed.nyc.globix.net!infeed.is.co.za!feeder.is.co.za!hades.is.co.za!not-for-mail From: "Adriaan Nortje" <gandalf@nol.co.za> Newsgroups: comp.databases.oracle.misc,comp.databases.oracle.server,comp.databases.oracle.tools,hannover.uni.comp.oracle Subject: Audit Trigger Date: Wed, 22 Aug 2001 19:51:48 +0200 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4133.2400 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400 Lines: 52 Message-ID: <3b83f0b8$0$233@hades.is.co.za> NNTP-Posting-Host: 196.33.198.207 X-Trace: hades.is.co.za 998502584 233 196.33.198.207