iklan banner

Solusi Buat Error "ORA-04091: table XXX is mutating, trigger/function may not see it" Pada Oracle

Ketika kita membuat suatu trigger terkadang terjadi error seperti dibawah ini:
ORA-04091: table AM is mutating, trigger/function may not see it

Error diatas bisa disebabkan karena pada bagian badan trigger terdapat SELECT statement yang membaca tabel sendiri pada saat tertentu dimana trigger akan dijalankan. misal seperti Trigger dibawah ini :

create or replace trigger hitungTelat
before update on transaksi
 for each row
declare
id buku.id_buku%TYPE;
pinjam date;
hrskembali date;
telat number;
begin
id := :old.id_buku;
select tgl_haruskembali into hrskembali from transaksi where id_buku= id;
telat := sysdate - hrskembali;
if telat <= 0 then
telat := 0;
else
telat := telat;
end if;
:New.telat := telat;
end;


jika perintah Update dijalankan, maka error akan muncul. Untuk menghindari error tersebut maka gunakan pragma autonomous_transaction; 
pada declarasi triggernya.

dari trigger diatas diubah menjadi:
create or replace trigger hitungTelat
before update on transaksi
 for each row
declare
id buku.id_buku%TYPE;
pinjam date;
hrskembali date;
telat number;

pragma autonomous_transaction; 
begin
id := :old.id_buku;
select tgl_haruskembali into hrskembali from transaksi where id_buku= id;
telat := sysdate - hrskembali;
if telat <= 0 then
telat := 0;
else
telat := telat;
end if;
:New.telat := telat;
end;


Selamat Mencoba....:D

 





----------------------------------------##############------------------------------------------
TANPA MODAL, KLIK IKLAN, ANDA AKAN DIBAYAR..!!!
Dapatkan Tambahan Rupiah Dengan Klik Iklan Pada Sistem PTC, Setiap Anda Klik Iklan, Anda Akan Dibayar..

Untuk lebih jelasnya silahkan kunjungi Apa itu dbclix?

Silahkan Daftarkan Diri Anda Sebagai REFERRAL SAYA Disini (Klik Gambar):
DbClix

Subscribe to receive free email updates:

1 Response to "Solusi Buat Error "ORA-04091: table XXX is mutating, trigger/function may not see it" Pada Oracle"

  1. terimakasih artikel ini sangat membantu.... ^_^

    ReplyDelete

Silahkan berkomentar di bawah ini, komentar yang tidak sopan, mengandung SARA dan saling menghujat tidak akan diterima :D