Kamis, 20 Januari 2011

Transaction


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)
 

Tidak ada komentar:

Posting Komentar