Anda di halaman 1dari 3

MySQL Transaction

Mungkin ada yg pernah mengalami, dalam satu proses terdiri dari banyak query, misalkan ada 3 insert, 2 update, 1 delete... sekarang pernah-kan terbayang kalau misalkan salah satu query tersebut terjadi error, maka data tersebuat akan menjadi tidak valid-kan.... dan coba bayangkan juga kalau itu ada hubungannya dgn transaksi uang... wow... ngeri banget-kan.... sejak MySQL versi 3.23, My !" memiliki #eature untuk menangani hal seperti di atas, namanya adalah MySQL Transaction, jadi bila terjadi error/problem pada sebuah query dalam blok
transaksi, semua perubahan yg terjadi disebelumnya akan diabaikan dan query selanjutnya akan di abaikan juga atau istilah nya ROLLBA !,

"ola nya adalah di ba#ah ini$


START TRANSACTION; [BLOK QUERY] COMMIT/ROOLBACK;

untuk menggunakan #eature transaction, harus dimulai dengan START TRA%SA T&O% di akhir dengan OMM&T atau ROLLBA !. Commit adalah sebuah perintah untuk menyimpan perubah secara fisik ke database, sedangkan Rollback akan mengabaikan semua perubahan dan yg kedua store en'ine tabel yang digunakan adalah inno(B lan'sun' aja )e contoh )asus*
"misalkan di aplikasi kita di perlukan sebuah proses untuk menyimpan data pemesan barang, dan dalam satu proses bisa terjadi lebih dari satu query tergantung jumbah barang yg di pesan, dan melibat-kan dua tabel yaitu tabel untuk menyimpan data pemesan dan data barang yg di pesan.$

tbl+"esanan+,st $ untuk menyimpan data pemesan


CREATE TABLE `db_test`.`tbl_pesanan_dtl` ( `kode_dtl` !a"(#$% NOT N&LL' `kode_(st` !a"(#$% NOT N&LL' `kode_b")` !a"(#$% NOT N&LL' `*(l` +nt(##% NOT N&LL' ,RIMAR- KE- (`kode_dtl`% % EN.INE/Inno0B 0E1A&LT C2ARSET/lat+n# COMMENT/3tabel 4nt4k (en5+(pan pesana deta+l3

tbl+"esanan+dtl $ untuk menyimpan data dari barang2 yang di pesan oleh pemesan
CREATE TABLE `db_test`.`tbl_pesanan_(st` ( `kode` !a"(#$% NOT N&LL' `na(a` 6a" !a"(788% NOT N&LL'

`ala(at` te9t NOT N&LL' `stat4s` en4((3$3'3#3% NOT N&LL COMMENT 3$/bel4( d+k+"(' #/s4da! d+k+"+(3' ,RIMAR- KE- (`kode`% % EN.INE/Inno0B 0E1A&LT C2ARSET/lat+n# COMMENT/3tabel 4nt4k (en5+(pan data7 pesanan3

diba#ah ini contoh blo) teransa)sinya


START TRANSACTION; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$#3'3,SN$$$$$$#3'3BR.$$$$$$#3'#$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$73'3,SN$$$$$$#3'3BR.$$$$$$73'7$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$:3'3,SN$$$$$$#3'3BR.$$$$$$:3':$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$;3'3,SN$$$$$$#3'3BR.$$$$$$;3';$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$83'3,SN$$$$$$#3'3BR.$$$$$$83'8$%; +nse"t +nto tbl_pesanan_(st 6al4es (3,SN$$$$$$#3'30end+e3'3<alan As(+ No #= Band4n)3'#%; COMMIT;

dgn statemen di atas... semua query akan di tulis ke database secara permanen bila tidak ada satu-pun query yang error atau terjadi problem. %&'% %'&( &)%*+( adalah sebagai awal blok transaksi dan )+MM*% adalah perintah untuk eksekusi-nya. oke... siip udah nangkap maksudnya... bagian dasar udah di jelaskan, sip.... itu-kan masih ,mentah,, sekarang kita modi#ikasi sedikit agar lebih enak pakai nya.... dari script di atas akan kita tambahkan bila terjadi error maka otomatis akan '+""-&)., kalau berhasil akan )+MM*%, dan akan di jadikan sebuah %+'/ 0'+)/12'/, oke... ini cara buat nya.
0ELIMITER > CREATE ,ROCE0&RE sp_+np4t_pesanan(% BE.IN DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND START TRANSACTION; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$#3'3,SN$$$$$$#3'3BR.$$$$$$#3'#$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$73'3,SN$$$$$$#3'3BR.$$$$$$73'7$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$:3'3,SN$$$$$$#3'3BR.$$$$$$:3':$%; +nse"t +nto tbl_pesanan_dtl 6al4es

ROLLBACK;

(3,SN0TL$$$;3'3,SN$$$$$$#3'3BR.$$$$$$;3';$%; +nse"t +nto tbl_pesanan_dtl 6al4es (3,SN0TL$$$83'3,SN$$$$$$#3'3BR.$$$$$$83'8$%; +nse"t +nto tbl_pesanan_(st 6al4es (3,SN$$$$$$#3'30end+e3'3<alan As(+ No #= Band4n)3'3$3%; COMMIT; EN0> 0ELIMITER ;

pada STOR- .RO -(/R-* diatas bagian yang penting adalah


DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING, NOT FOUND

ROLLBACK;

perintah di atas artinya adalah akan meng-HAN !" bila terjadi error, #arning dan proses$ yang abnormal maka akan di lakukan perintah ROLLBA ! kalau implementasi dalam level aplikasi gimana, nah sebetulnya kalau kita udah bikin store procedure seperti diatas, tinggal di panggil aja store procedure nya, tapi kalau ngak mau pake store procedure... caranya seperti dibawah ini, sebagai contoh gw pake 030.
(5s?l+_a4to o((+t($d !, FALSE"; >"es4lt/(5s?l+_?4e"5(>db!' >?4e"5#%; +@ (>"es4lt A// TR&E% B #$%&'()*+'' ,-.($d !"; //kala4 ada e""o" d+ ?4e"5 # akan d+ "ollba k C >"es4lt/(5s?l+_?4e"5(>db!' >?4e"57%; +@ (>"es4lt A// TR&E% B #$%&'()*+'' ,-.($d !"; //kala4 ada e""o" d+ ?4e"5 7 akan d+ "ollba k C C //kala4 n)ak ada e""o" (aka akan d+ #$%&'()-+##(/($d !"; (5s?l+_ lose(>db!%; DE o((+t

S-L-SA&

Anda mungkin juga menyukai