Friday, December 13, 2013

Hati-hati tembak database. Gunakan BEGIN TRANSACTION dan ROLLBACK

Hi guys....

Kemarin adalah hari yang bikin heboh. Waktu sedang me-maintain data dengan SQL Management Studio, secara tidak sengaja, saya memberikan perintah UPDATE ke master items TANPA perintah WHERE. Ini adalah database live di sebuah supermarket. Masih untung toko sedang tidak terlalu ramai dan saya berhasil menyelamatkan empat kasir dari data update. Ini adalah supermarket dengan 16 kasir dan kebetulan ada sekitar 8 kasir yang buka, 4 kasir ditutup paksa (sambil diomelin customer dan mendadak jadi ada antrian kasir) karena semua item punya harga jual = 49,900  (bayangkan: indomie = 49,900, permen = 49,900.... Tapi juga bayangkan: microwave = 49,900, rice cooker = 49,900, semua oli = 49,900, dll-dll-dll....

Wah stress banget. Anyway, singkat cerita mengenai kasus itu; semua data kembali normal dalam 1/2 jam dan kasir bisa beroperasional normal lagi.

Pelajaran yang saya ambil; sejak kemarin, di semua perintah yang saya kerjakan di live database dan berpengaruh ke data (sebelum INSERT/UPDATE) saya berikan blok BEGIN TRANSACTION ... ROLLBACK TRANSACTION dulu. Jadi:

BEGIN TRANSACTION
...
... proses perubahan data
...

SELECT query untuk memeriksa hasil data
ROLLBACK TRANSACTION


Nah... hasilnya bener, barulah, SELECT query yang di bawah di comment, dan ROLLBACK TRANSACTION diganti menjadi COMMIT TRANSACTION.


Huuuuuffff.... semoga bisa jadi pelajaran untuk rekan-rekan. Ada pepatah yang bilang pengalaman adalah guru yang terbaik. Tapi sebenarnya pepatah itu harusnya berbunyai "Pengalaman ORANG LAIN adalah guru yang terbaik"

2 comments:

Yaten said...

Kebayang kalau pakai dbf/dbc tdk pakai buffering, diomelin kayak apa ya ? hehe. Sukses terus pa foxy.

Petrus Budi = Penghoby Fotografer said...

Wah terima kasih.. benar sekali