1. Apa itu transaction?
Sebuah transaksi adalah sekelompok perintah yang harus dijalankan, hasilnya berhasil atau gagal untuk semua perintah tersebut
2. Apa pentingnya transaction?
Lihat contoh berikut : missal diperlukan perubahan stok setiap kali ada penjualan 1 item barang
Update Inventory
Set qty = qty – 1
Where item_id=2012
Insert Sales_detail (item_id, inv_id, datesold, qty)
Values(2012, 308, current_timestamp, 1)
BEGIN TRAN
Update Inventory
Set qty = qty – 1
Where item_id=2012
Insert Sales_detail (item_id, inv_id, datesold, qty)
Values(2012, 308, current_timestamp, 1)
COMMIT TRAN -- Mengunci data (check point)
CONTOH :
2.
CREATE TABLE tbCustomer -- Membuat tabel Customer
(
IdCust varchar(10),
Customer varchar(30),
primary key (IdCust)
)
--lihat data sebelum di update
SELECT * FROM tbCustomer -- Lihat isi tabel (masih kosong)
BEGIN TRAN -- Buat Transaction
--lakukan insert
INSERT tbCustomer VALUES ('001','Nugraha') -- Insert Data 1
INSERT tbCustomer VALUES ('002', 'Agung') -- Insert Data 2
--lihat data sesudah diinsert
SELECT * FROM tbCustomer -- Lihat kembali isi tabel Customer setelah penginsert-an 2 data
ROLLBACK TRAN -- Kembalikan isi tabel sebelum Transaction di-execute
--lihat data sesudah dirollback
SELECT * FROM tbCustomer -- Tampilkan kembali isi tabel Customer yang telah kembali kosong
CONTOH Penggunaan Check Point :
-- Create table to work with
CREATE TABLE MyTranTest
(
OrderID INT PRIMARY KEY IDENTITY
)
select * from mytrantest ---------------------(A)
BEGIN TRAN TranStart
INSERT INTO MyTranTest
DEFAULT VALUES
select * from mytrantest ---------------------(B)
SAVE TRAN FirstPoint
INSERT INTO MyTranTest
DEFAULT VALUES
select * from mytrantest ---------------------(C)
ROLLBACK TRAN FirstPoint
select * from mytrantest ---------------------(D)
INSERT INTO MyTranTest
DEFAULT VALUES
select * from mytrantest ---------------------(E)
SAVE TRAN SecondPoint
INSERT INTO MyTranTest
DEFAULT VALUES
select * from mytrantest ---------------------(F)
ROLLBACK TRAN SecondPoint
select * from mytrantest
INSERT INTO MyTranTest
DEFAULT VALUES
select * from mytrantest ---------------------(G)
COMMIT TRAN TranStart
SELECT TOP 3 OrderID
FROM MyTranTest
ORDER BY OrderID ASC ---------------------(H)