Senin, 21 April 2014

TRANSAKSI pada ORACLE

TRANSAKSI pada ORACLE



Transaksi merupakan sebuah proses untuk mengakses atau mengubah isi basis data.
Tujuan transaksi untuk mencegah data dari kehilangan atau kerusakan data.

Untuk menjaga integritas dan ketahanan data, kita bisa melakukan perintah COMMIT dan ROLLBACK
  1. COMMIT, untuk menandai transaksi berhasil
  2. ROLLBACK, transaksi harus diulang karena adanya kegagalan transaksi

Dalam ORACLE, agar kita bisa melakukan ROLLBACK kita perlu menyimpan transaksi pada sebuah SAVEPOINT(cek point), caranya
SAVEPOINT [nama_savepoint];

Setelah berhasil membuat sebuah SAVEPOINT, kita bisa melakukan perintah ROLLBACK, caranya
ROLLBACK TO [nama_savepoint];

Perintah ROLLBACK akan terjadi kegagalan jika kita telah mengetikkan perintah COMMIT sebelumnya,

Contoh ROLLBACK
ROLLBACK berhasil ROLLBACK berhasil ROLLBACK gagal

CREATE TABLE tb(
Id NUMBER(11) PRIMARY KEY,
Nama VARCHAR2(40) NOT NULL
);
CREATE SEQUENCE seq INCREMENT BY 1;
INSERT INTO tb VALUES(seq.NEXTVAL,’Danang’);


SAVEPOINT simpan1; SAVEPOINT simpan1; SAVEPOINT simpan1;
UPDATE tb SET nama = ‘Danang ESS’ WHERE id = 1; COMMIT; COMMIT;
ROLLBACK TO simpan1; UPDATE tb SET nama = ‘Danang ESS’ WHERE id = 1; ROLLBACK TO simpan1;
COMMIT; SAVEPOINT simpan1;



ROLLBACK TO simpan1;
COMMIT;




Kenapa ROLLBACK bisa gagal???
Maka akan muncul perintah error, karena data sudah di COMMIT sebelumnya yang artinya bahwa transaksi sudah disetujui, dan secara ga langsung SAVEPOINT yang telah kita buat sebelum COMMIT tadi akan dihapus

intinya, jika kita telah melakukan COMMIT, maka SAVEPOINT sebelum COMMIT akan terhapuskan, maka itulah kita tidak bisa melakukan ROLLBACK ke SAVEPOINT sebelum COMMIT yang terakhir

Tidak ada komentar:

Posting Komentar