Kalau tujuan auditnya setiap ada data baru ataupun perubahan, jangan
pakai :old tapi pakai :new untuk insert dan update, sementara untuk
delete gunakan :old.
Berikut contoh scriptnya
==================
CREATE TABLE COBA
(
EMPNO NUMBER(4),
NAMA VARCHAR2(20),
JABATAN VARCHAR2(10),
GAJI NUMBER
);
======================
CREATE TABLE COBA_audit
(
Tanggal_edit date,
EMPNO NUMBER(4),
NAMA VARCHAR2(20),
JABATAN VARCHAR2(10),
GAJI NUMBER,
OPERASI VARCHAR2(6)
);
=======================================
BEFORE INSERT OR UPDATE OR DELETE ON COBA FOR EACH ROW
DECLARE
BEGIN
if inserting then
insert into COBA_audit values (
sysdate,
:new.EMPNO,
:new.NAMA,
:new.JABATAN,
:new.GAJI,
'INSERT'
);
elsif updating then
insert into COBA_audit values (
sysdate,
:new.EMPNO,
:new.NAMA,
:new.JABATAN,
:new.GAJI,
'UPDATE'
);
elsif deleting then
insert into COBA_audit values (
sysdate,
:old.EMPNO,
:old.NAMA,
:old.JABATAN,
:old.GAJI,
'DELETE'
);
end if;
END;
Di bawah ini DML yang saya coba
==============================================
insert into COBA values (1, 'Andes', 'DBA', 400000);
commit;
==============================================
update COBA set gaji=1000000 where empno=1;
commit;
==============================================
delete COBA where empno = 1;
commit;
Selanjutnya hasil query dari
==============================================
select tanggal_edit, empno, nama, jabatan, gaji, operasi from coba_audit;
TANGGAL_EDIT EMPNO NAMA JABATAN GAJI OPERASI
8/12/2008 5:14:13 PM 1 Andes DBA 400000 INSERT
8/12/2008 5:14:13 PM 1 Andes DBA 1000000 UPDATE
8/12/2008 5:14:13 PM 1 Andes DBA 1000000 DELETE
Cheers,
Wadi Achmed
Andes Febrian wrote:
> Dear gurus,
>
> untuk audit proses insert knp ya data yg di tampilkan pada table audit hanya
> tanggal. seperti contoh di bawah ini :
> ==================
> CREATE TABLE COBA
> (
> EMPNO NUMBER(4),
> NAMA VARCHAR2(20),
> JABATAN VARCHAR2(10),
> GAJI NUMBER
> );
>
> ======================
> CREATE TABLE COBA_audit
> (
> Tanggal_edit date,
> EMPNO NUMBER(4),
> NAMA VARCHAR2(20),
> JABATAN VARCHAR2(10),
> GAJI NUMBER
> );
>
> =======================================
> CREATE OR REPLACE TRIGGER trg_COBA_audit
> BEFORE INSERT OR DELETE OR UPDATE ON COBA
> FOR EACH ROW
> DECLARE
> BEGIN
> insert into COBA_audit values (
> sysdate,
> :old.EMPNO,
> :old.NAMA,
> :old.JABATAN,
> :old.GAJI
> );
> END;
> /
>
> ===================================
> insert into COBA2 values (1, 'Andes', 'DBA', 400000)
> commit;
>
> ***setelah insert, saya select * from coba_audit hasilnya adalah :
> tanggal_edit empno ename job sal 08/12/2008 16:07:33
>
>
>
>
> ===================================
> update COBA2 set sal=1000000 where empno=1
> commit;
>
> ****kemudian bila saya update barulah tampil, sebagai berikut :
> tanggal_edit empno ename job sal 08/12/2008 16:16:44 3 Andes DBA
> 1.000.000,00 08/12/2008 16:14:30
>
>
>
>
> Mohon pencerahannya, terima kasih.
>
[Non-text portions of this message have been removed]