Senin, 09 April 2012

Database Transaction


Bisa dibilang Data Transaction adalah segala macam proses DML, DDL, maupun DCL(Data Control Language) yang terjadi dalam database. Control Transaction memberikan kita fleksibilitas dan control dalam merubah data dan juga memastikan terjadinya kekonsistenan data.
Tipe Transaction


Tipe Transaction
TipeDeskripsi
DDLTerdiri dari satu statement DDL
DMLTerdiri dari beberapa statement DML
DCLTerdiri dari satu statement DCL
Database Transaction dimulai dengan DML statement yang kemudian diakhiri dengan salah satu event berikut :
  • Sebuah COMMIT atau ROLLBACK
  • Di Executenya statement DDL atau DCL
  • USER Keluar dari iSQL Plus
  • System Crash
Eksplisit Transaction Contorl Statemnt
TipeDeskripsi
COMMITmengakhiri transaksi yang sedang terjadi dengan merubah semua pending data menjadi permanen
ROLLBACKMengembalikan transaksi kebentuk semula sampai bertemu COMMIT terakhir kali
SAVEPOINT nameSebagai penanda di dalam transaksi yang sedang terjadi
ROLLBACK TO SAVEPOINTMengembalikan transaksi sampai bertemunya SAVEPOINT

Proses Implicit Transaction

Berikut adalah statement-statemnet yang mengakibatkan COMMIT secara otomatis :
  • Terjadinya DDL statement
  • Terjadinya DCL statement
  • Normal Exit dari iSQL Plus tanpa menggunakan COMMIT atau ROLLBACK sebelumnya.
Dan ROLLBACK secara otomatis terjadi ketika terjadinya termination pada iSQL PLUS secara abnormal atau terjadinya system failure.
Berikut ini hal yang dapat dilakukan Sebelum data di COMMIT atau di ROLLBACK :
  • Current user dapat melihat hasil dari DML statement yang dilakukannya dengan menggunakan SELECT sedangkan user yang lain tidak dapat melihat hasil tersebut sampai dikeluarkanya statement commit oleh Current USER
  • Semua Data yang sedang digunakan oleh Current User menjadi terkunci, sehingga tidak dapat diakses oleh user lain dan hanya bisa diakses oleh si CURRENT User
  • Current User dapat mengembalikan data ke bentuk sebelumnya
Berikut ini hal yang dapat dilakukan setelah data di COMMIT atau di ROLLBACK :
  • Perubahan data menjadi permanent
  • Data sebelum di commit otomatis langsung hilang
  • Semua user dapat melihat datanya
  • Data yang tadinya terkunci menjadi terbuka, sehingga dapat diakses oleh seluruh user
  • Seluruh Savepoint hilang
Contoh :
Sebelum kita melakukanya kita harus menggunakan keyword SET AUTOCOMMIT OFF terlebih dahulu, yang berguna untuk memberi tahu sistem untuk mematikan autocommit.
SET AUTOCOMMIT OFF
DELETE FROM Employees WHERE employee_id = 120;
setelah itu kita dapat mengembalikanya lagi dengan
ROLLBACK
atau membuatnya permanen dengan menuliskan
COMMIT
Nb: Walaupun kita telah menuliskan SET AUTOCOMMIT OFF, tetapi autocommit tetap terjadi jika adanya proses ddl, dcl dan sistem failure
SAVEPOINT
Savepoint digunakan untuk menandakan sampai dimana rollbacknya berhenti
Contoh :
Update employees
SET Salary = 2000
WHERE employee_id = 130;
SAVEPOINT A;
Update Employees
SET Salary = 4000
WHERE employee_id = 130;
SAVEPOINT B;
Update Employees
SET Salary = 5000
WHERE employee_id = 130;
Ketika kita menjalankan
ROLLBACK TO SAVEPOINT B;
Maka SALARY employee_id = 130 adalah 4000 dan Jika kita hanya menuliskan ROLLBACK saja, Maka hasilnya adalah salary sebe



0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More