misal begini
table A ada trigger
create triger ...
PRAGMA AUTONOMOUS TRANSACTION
begin
insert into b select sum(...) from A
commit;
end;
----
Di aplikasi
--------
try
{
Insert into A(x, y , z);
Call proc_lainnnya ----Opss ada error disini
}
catch (Exception ex)
{
rollback;
}
---------
Table A rollback
Proc_lainnya rollback
Tabel B commit, tidak rollback karena autonomous transaction
Lalu apakah data di tabel B konsisten, jika B berasal dari sum A,
padahal A sudah ter-rollback.
CMIIW juga.
2008/7/21 Oscar Wilyanto <[EMAIL PROTECTED]>:
> sepengetahuan saya COMMIT pada trigger dengan AUTONOMOUS TRANSACTION hanya
> berlaku untuk operasi2 didalam trigger tersebut. jadi jika setelah trigger
> selesai diekesekusi kita rollback, perubahan didalam trigger juga ikut ter-
> rollback.
>
> mungkin ada yang pernah coba, jadi bisa CMIIW.
>
>
> ----- Original Message -----
> From: m Ilhami
> To: [email protected]
> Sent: Friday, July 18, 2008 1:10 PM
> Subject: Re: [indo-oracle] error mutating trigger
>
>
> Saya kurang setuju pakai AUTONOMOUS TRANSACTION. Seandainya transaksi
> insert row tersebut digabung dengan operasi di tabel lain, jika ada
> sesuatu, saya tidak bisa me rollback seluruh transaksi tersebut.
> Record tersebut tetap terinsert ke dalam tabel.
>
> Saya lebih setuju dengan membuat procedure untuk operasi insert +
> summary tersebut.
>
> AUTONOMOUS TRANSACTION biasanya hanya saya gunakan untuk logging saja.
>
> 2008/7/17 Oscar Wilyanto <[EMAIL PROTECTED]>:
> > Kalau solusinya menggunakan Application Code tentu saja tidak menjawab
> pertanyaan awal, karena error mutating table yang ditanyakan pak Risty tidak
> akan pernah terjadi.
> >
> > Jika menggunakan application code untuk menjaga integritas database juga
> memiliki kelemahan tersendiri, yakni database tidak mandiri, misalnya: saat
> menulis Applikasi baru dengan bahasa program yang berbeda, semua integritas
> database harus ditulis ulang, menurut saya ini kelemahan besar. Jauh lebih
> baik menulis trigger saja.
> >
> > Salah....statement trigger juga tidak bisa di pakai.
> > gimana anda bisa mendapatkan transaction ID yang di process kalo tidak ada
> > :NEW ??
> >
> > Pakai statement trigger tentu saja bisa, tetapi sifatnya mengupdate tabel
> tersebut secara keseluruhan (UPDATE .. WHERE...) dengan menggunakan timming
> AFTER, jadi tidak diperlukan nilai :NEW, dan masalah mutating table yang
> ditanyakan tetap akan terjadi, oleh karena itu cara termudah menurut saya
> pribadi tetap menggunakan PRAGMA AUTONOMOUS_TRANSACTION seperti yang saya
> kemukakan dari awal.
> >
> > Mengenai menggunakan statement atau row trigger, dalam kasus ini saya
> pribadi lebih prefer menggunakan row trigger.
> >
> > ----- Original Message -----
> > From: Yoel Susanto
> > To: [email protected]
> > Sent: Wednesday, July 16, 2008 2:02 PM
> > Subject: Re: [indo-oracle] error mutating trigger
> >
> >
> > Salah....statement trigger juga tidak bisa di pakai.
> > gimana anda bisa mendapatkan transaction ID yang di process kalo tidak ada
> > :NEW ??
> >
> > Paleng bagus yah pake procedure yang dipanggil oleh application secara
> > explicit setelah transaksi selesai (COMMIT).
> > karena application pasti tau transaksi ID nya.
> >
> > 2008/7/16 Oscar Wilyanto <[EMAIL PROTECTED]>:
> >
> > > ok, saya sudah menangkap maksudnya. jadi dalam kasus ini lebih baik
> > > menggunakan 'statement trigger' daripada 'row trigger'. dan bukan tidak
> > > menggunakan trigger sama sekali.
> > >
> > > mudah2an kasus pak Risty ini terjawab.
> > >
> > >
> > > ----- Original Message -----
> > > From: Yoel Susanto
> > > To: [email protected] <indo-oracle%40yahoogroups.com>
> > > Sent: Wednesday, July 16, 2008 12:05 PM
> > > Subject: Re: [indo-oracle] error mutating trigger
> > >
> > > untuk kasus seperti ini, saya rasa tidak ada.
> > > cara paleng simple dan menguntungkan yah di application code nya.
> > >
> > > transaksi
> > > -- insert record 1
> > > -- insert record 2
> > > -- insert record 3
> > > -- insert record 4
> > > end transaksi (Commit)
> > >
> > > call procedure;
> > >
> > > Skali lagi untuk kasus ini, tidak ada gunanya melakukan computasi setiap
> > > selesai insert record baru.
> > > Yang benar adalah setiap selesai transaksi, dari contoh yang di berikan
> TS
> > > ,
> > > 1 transaksi bisa terdiri dari beberapa record tergantung package barang
> > > nya.
> > >
> > > 2008/7/16 Oscar Wilyanto <[EMAIL PROTECTED] <oscar%40mkdgroup.com>>:
> > >
> > > > Selain menggunakan trigger, apakah ada cara lain untuk mengotomatisasi
> > > > pengeksekusian sebuah SQL statement atau memanggil procedure dengan
> > > timing
> > > > setiap kali selesai insert baru?
> > > >
> > > > ----- Original Message -----
> > > > From: Yoel Susanto
> > > > To: [email protected]
> <indo-oracle%40yahoogroups.com><indo-oracle%
> > > 40yahoogroups.com>
> > > > Sent: Wednesday, July 16, 2008 10:12 AM
> > > > Subject: Re: [indo-oracle] error mutating trigger
> > > >
> > > > cara paleng mudah yah tidak perlu trigger.
> > > > ketika Anda mau melihat Summary transaksi, lakukan dengan SQL statement
> > > :))
> > > >
> > > > ATAU create PLSQL Procedure untuk menggantikan trigger tersebut.
> > > > panggil procedure tersebut setelah selesai insert detail transaksi
> > > >
> > > > Thanks.
> > > >
> > > > 2008/7/16 risty <[EMAIL PROTECTED]<deny_risty%40kudus.puragroup.com>
> > > <deny_risty%40kudus.puragroup.com>
> > > > >:
> > > >
> > > > > pak Yoel...
> > > > > pada prinsipnya table_a adalah tabel detil utk menampung data packing
> > > > suatu
> > > > > produk yang mana yang membedakan selain no urut adalah jumlah BOX dan
> > > ISI
> > > > > sehigga akan mendapat total TOT_QTY ( box x isi). Dari situ data akan
> > > > > otomatis masuk ke table_b lewat trigger dalam bentuk rekap
> > > quantitasnya.
> > > > > Adakah struktur yg harus di pisah lagi ?? Apakah harus menggunakan
> > > > variable
> > > > > array dalam triggernya utk menampung summary qty nya?? Mohon solusi
> dan
> > > > > bimbingannya
> > > > > thq sebelumnya.......
> > > > >
> > > > >
> > > > > ----- Original Message -----
> > > > > From: Yoel Susanto
> > > > > To: [email protected]
> <indo-oracle%40yahoogroups.com><indo-oracle%
> > > 40yahoogroups.com><indo-oracle%
> > > > 40yahoogroups.com>
> > > > > Sent: Tuesday, July 15, 2008 5:51 PM
> > > > > Subject: Re: [indo-oracle] error mutating trigger
> > > > >
> > > > > Hi Risty,
> > > > >
> > > > > Saya mau tanya mengenai business procedurenya., karena mungkin anda
> > > > > melakukan sesuatu yang tidak perlu.
> > > > > Apa yang membedakan record berikut, sehingga mereka harus dipisah
> > > > > berdasarkan no urutnya??
> > > > > Saya liat no_trans, tgl trans, item sama semua, kenapa kalau ini
> adalah
> > > > > satu
> > > > > transaksi mereka harus dipisah recordnya
> > > > >
> > > > > 55 01/05/08 1 A 2 100 200
> > > > > 55 01/05/08 2 A 1 50 50
> > > > >
> > > > > 2008/7/15 risty <[EMAIL PROTECTED]<deny_risty%40kudus.puragroup.com>
> > > <deny_risty%40kudus.puragroup.com>
> > > > <deny_risty%40kudus.puragroup.com>
> > > > > >:
> > > > >
> > > > > > Dear all masters...
> > > > > >
> > > > > > saya adalah pemula oracle,bagaimana menghindari error mutating
> > > trigger
> > > > > > bilamana triggenya mengakumulasi qty dari table_a itu sendiri
> > > > > >
> > > > > > mis: table detil_a
> > > > > >
> > > > > > no_trans tgl_tans no_urut item box isi tot_qty
> > > > > > ------------ ------------ ----------- -------- ------ ----
> ---------
> > > > > > 55 01/05/08 1 A 2 100 200
> > > > > > 55 01/05/08 2 A 1 50 50
> > > > > > 56 01/05/08 1 B 1 200 200
> > > > > >
> > > > > > akan otomatis di insert ke table_b lewat trigger
> > > > > >
> > > > > > no_trans tgl_tans item tot_qty
> > > > > > ------------ ------------ ------- -------
> > > > > > 55 01/05/08 A 250
> > > > > > 56 01/05/08 B 200
> > > > > >
> > > > > > Harus seperti apa trigger yg harus dibuat, mohon solusinya??
> > > > > >
> > > > > > thx
> > > > > >
> > > > > > [Non-text portions of this message have been removed]
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > Cheers,
> > > > > Yoel Susanto
> > > > >
> > > > > www.indo-oracletech.com
> > > > >
> > > > > [Non-text portions of this message have been removed]
> > > > >
> > > > > [Non-text portions of this message have been removed]
> > > > >
> > > > >
> > > > >
> > > >
> > > > --
> > > > Cheers,
> > > > Yoel Susanto
> > > >
> > > > www.indo-oracletech.com
> > > >
> > > > [Non-text portions of this message have been removed]
> > > >
> > > > <br>
> > > > <br>
> > > > <table width="100%">
> > > > <tr>
> > > > <td>
> > > > ----------------------------------------------------------<br>
> > > > This message contains confidential information and is intended only for
> > > the
> > > > individual named. If you are not the named addressee you should not
> > > > disseminate, distribute or copy this e-mail. Please notify the sender
> > > > immediately by e-mail if you have received this e-mail by mistake and
> > > delete
> > > > this e-mail from your system. E-mail transmission cannot be guaranteed
> to
> > > be
> > > > secure or error-free as information could be intercepted, corrupted,
> > > lost,
> > > > destroyed, arrive late or incomplete, or contain viruses. MKD Group
> > > > therefore does not accept liability for any errors or omissions in the
> > > > contents of this message, which arise as a result of e-mail
> transmission.
> > > If
> > > > verification is required please request a hard-copy version.
> > > > <br><br>
> > > > MKD Group, www.mkdgroup.com<br>
> > > > ----------------------------------------------------------<br>
> > > > </td>
> > > > </tr>
> > > > </table>
> > > >
> > > > [Non-text portions of this message have been removed]
> > > >
> > > >
> > > >
> > >
> > > --
> > > Cheers,
> > > Yoel Susanto
> > >
> > > www.indo-oracletech.com
> > >
> > > [Non-text portions of this message have been removed]
> > >
> > > <br>
> > > <br>
> > > <table width="100%">
> > > <tr>
> > > <td>
> > > ----------------------------------------------------------<br>
> > > This message contains confidential information and is intended only for
> the
> > > individual named. If you are not the named addressee you should not
> > > disseminate, distribute or copy this e-mail. Please notify the sender
> > > immediately by e-mail if you have received this e-mail by mistake and
> delete
> > > this e-mail from your system. E-mail transmission cannot be guaranteed
> to be
> > > secure or error-free as information could be intercepted, corrupted,
> lost,
> > > destroyed, arrive late or incomplete, or contain viruses. MKD Group
> > > therefore does not accept liability for any errors or omissions in the
> > > contents of this message, which arise as a result of e-mail
> transmission. If
> > > verification is required please request a hard-copy version.
> > > <br><br>
> > > MKD Group, www.mkdgroup.com<br>
> > > ----------------------------------------------------------<br>
> > > </td>
> > > </tr>
> > > </table>
> > >
> > > [Non-text portions of this message have been removed]
> > >
> > >
> > >
> >
> > --
> > Cheers,
> > Yoel Susanto
> >
> > www.indo-oracletech.com
> >
> > [Non-text portions of this message have been removed]
> >
> >
> >
> >
> > <br>
> > <br>
> > <table width="100%">
> > <tr>
> > <td>
> > ----------------------------------------------------------<br>
> > This message contains confidential information and is intended only for
> the individual named. If you are not the named addressee you should not
> disseminate, distribute or copy this e-mail. Please notify the sender
> immediately by e-mail if you have received this e-mail by mistake and delete
> this e-mail from your system. E-mail transmission cannot be guaranteed to be
> secure or error-free as information could be intercepted, corrupted, lost,
> destroyed, arrive late or incomplete, or contain viruses. MKD Group therefore
> does not accept liability for any errors or omissions in the contents of this
> message, which arise as a result of e-mail transmission. If verification is
> required please request a hard-copy version.
> > <br><br>
> > MKD Group, www.mkdgroup.com<br>
> > ----------------------------------------------------------<br>
> > </td>
> > </tr>
> > </table>
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
> >
> > ------------------------------------
> >
> > --
> > -----------I.N.D.O - O.R.A.C.L.E---------------
> > Keluar: [EMAIL PROTECTED]
> > Website: http://indooracle.wordpress.com
> > -----------------------------------------------
> >
> > Bergabung dengan Indonesia Thin Client User Groups,
> > Terminal Server, Citrix, New Moon Caneveral, di:
> > http://indo-thin.blogspot.comYahoo! Groups Links
> >
> >
> >
> >
>
>
>
> <br>
> <br>
> <table width="100%">
> <tr>
> <td>
> ------------------------------------------------------------------------------<br>
> This message contains confidential information and is intended only for the
> individual named. If you are not the named addressee you should not
> disseminate, distribute or copy this e-mail. Please notify the sender
> immediately by e-mail if you have received this e-mail by mistake and delete
> this e-mail from your system. E-mail transmission cannot be guaranteed to be
> secure or error-free as information could be intercepted, corrupted, lost,
> destroyed, arrive late or incomplete, or contain viruses. MKD Group therefore
> does not accept liability for any errors or omissions in the contents of this
> message, which arise as a result of e-mail transmission. If verification is
> required please request a hard-copy version.
> <br><br>
> MKD Group, www.mkdgroup.com<br>
> ------------------------------------------------------------------------------<br>
> </td>
> </tr>
> </table>
>
>
>
> [Non-text portions of this message have been removed]
>
>
> ------------------------------------
>
> --
> -----------I.N.D.O - O.R.A.C.L.E---------------
> Keluar: [EMAIL PROTECTED]
> Website: http://indooracle.wordpress.com
> -----------------------------------------------
>
> Bergabung dengan Indonesia Thin Client User Groups,
> Terminal Server, Citrix, New Moon Caneveral, di:
> http://indo-thin.blogspot.comYahoo! Groups Links
>
>
>
>