Transaction adalah sebuah unit kerja yang terdiri dari
beberapa aktifitas query untuk melakukan
modifikasi data
Transactions dapat didefinisikan secara implisit ataupun eksplisit
Secara explisit, transaction didefinisikan sebagai berikut :
BEGIN TRAN : untuk memulai transaction
COMMIT TRAN : untuk mengakhiri transaction
ROLLBACK TRAN : untuk membatalkan transaction
Mendefinisikan transaction secara explisit dengan 2 statemen
INSERT
Jika anda tidak mendefinisikan
transaksi secara explisit seperti diatas, maka SQL Server akan
menganggap tiap
statemen diatas sebagai transaction dan langsung melakukan commit.
Transaction Property
ACID (Atomicity, Consistency, Isolation, Durability)
Atomicity
Transaction adalah sebuah unit kerja atomic, artinya semua
statemen harus berhasil dieksekusi atau
tidak sama sekali jika satu atau lebih
dari statemen itu gagal
Consistency
Transaction menjaga konsistensi data, sesuai dengan integrity
rule yang diterapkan (primary keys,
unique constraints dan foreign keys)
Isolation
Mekanisme untuk mengontrol akses data untuk memastikan bahwa
sebuah transaction hanya dapat
mengakses data pada level konsistensi yang
dibutuhkan.
Durability
Perubahan data selalu disimpan dalam log sebelum benar-benar
diterapkan pada database. Sehingga
apabila sebuah transaksi gagal karena system
failure atau sebab apapun, pada saat server di-restart
maka server akan
mengecek log yang ada dan melakukan undo ataupun redo
Berikut merupakan contoh transaction SQL Server pada sistem informasi rumah sakit
1. Rawat
Inap
Adalah
transaksi yang digunakan untuk manipulasi data pasien rawat inap di rumah sakit yang
melibatkan beberapa tabel yaitu
tabel pasien, tabel ruangan dan tabel rawat_inap. Transaksi rawat
inap dibuat
dengan tujuan untuk menyimpan data pasien dan di ruang mana pasien dirawat
dimana
tabel rawat_inap berelasi dengan
tabel pasien dan tabel ruangan.
BEGIN TRANSACTION ;
BEGIN TRY
INSERT INTO
pasien(nama_pasien, jenis_kelamin,umur,alamat_pasien,
no_telp_pasien, id_perawat, id_dokter, id_resep)
values('Abidin','Laki-laki',24,'Jalan Kenanga 12 Malang',
'089789765678',1,1,1)
INSERT INTO rawat_inap(id_pasien,id_ruangan,tgl_masuk) values (16,8,getdate())
END TRY
BEGIN CATCH
IF @@trancount>0
PRINT 'GAGAL INSERT'
ROLLBACK TRANSACTION;
END CATCH;
IF @@trancount>0
COMMIT TRANSACTION
Hasil Eksekusi :
Tabel Pasien
Tabel Rawat Inap
2. Kunjungan
Poli
Adalah
transaksi yang digunakan untuk manipulasi data pasien yang berkunjung ke poli yang
melibatkan beberapa tabel yaitu
tabel poli, tabel pasien dan tabel poli_visit. Transaksi kunjungan
poli dibuat dengan
tujuan untuk menyimpan data pasien yang berkunjung ke poli dimana tabel
poli_visit berelasi dengan tabel pasien dan tabel poli.
BEGIN TRANSACTION ;
BEGIN TRY
INSERT INTO
pasien(nama_pasien, jenis_kelamin,umur,
alamat_pasien,
no_telp_pasien, id_perawat,
id_dokter,
id_resep)
values
('Arini','Perempuan',24,'Jalan Kenanga 12 Malang', '089789765909',1,2,1)
INSERT INTO poli_visit
(id_pasien, id_poli,
tanggal_berkunjung)
values (12, 6, '2013-12-27')
END TRY
BEGIN CATCH
IF @@trancount>0
PRINT 'GAGAL INSERT'
ROLLBACK TRANSACTION;
END CATCH;
IF @@trancount>0
COMMIT TRANSACTION
Hasil Eksekusi
Tabel Pasien :
Tabel Poli Visit :
3. Pembayaran
Adalah
transaksi yang digunakan untuk manipulasi data pembayaran pasien rawat inap di rumah
sakit yang
melibatkan beberapa tabel yaitu
tabel pasien, tabel kasir dan tabel biaya. Transaksi
pembayaran dibuat dengan tujuan untuk menyimpan data
pembayaran pasien rawat inap dimana
tabel biaya berelasi dengan tabel pasien dan
tabel kasir.
BEGIN TRANSACTION ;
BEGIN TRY
INSERT INTO
biaya(tgl_bayar,
id_pasien, id_kasir)
values ('2013-12-29', 13, 2)
END TRY
BEGIN CATCH
IF @@trancount>0
PRINT 'GAGAL INSERT'
ROLLBACK TRANSACTION;
END CATCH;
IF @@trancount>0
COMMIT TRANSACTION
Hasil Eksekusi :
Tabel Biaya
4. Item
Obat
Transaksi
ini digunakan untuk manipulasi data resep pasien melibatkan beberapa
tabel yaitu tabel
pasien, tabel
resep_obat, tabel obat dan tabel item_obat. Transaksi item obat dibuat dengan
tujuan
untuk melihat resep pasien beserta obatnya yang terdapat pada resep obat
dimana tabel pasien
berelasi dengan tabel resep_obat; tabel item_obat berelasi
dengan tabel obat, dan tabel resep_obat.
BEGIN TRANSACTION ;
BEGIN TRY
INSERT INTO
pasien
(nama_pasien,
jenis_kelamin,umur,
alamat_pasien, no_telp_pasien,
id_perawat,
id_dokter,
id_resep)
values('Agustin','Perempuan',29,
'Jalan Kenanga 12 Malang', '089789765909',3,2,11)
INSERT INTO
resep_obat
(nama_resep) VALUES ('resep_baru')
INSERT INTO
item_obat (id_obat, id_resep)
VALUES (1, 11)
INSERT INTO
item_obat (id_obat, id_resep)
VALUES (2, 11)
INSERT INTO
item_obat (id_obat, id_resep)
VALUES (3, 11)
END TRY
BEGIN CATCH
IF @@trancount>0
PRINT 'GAGAL INSERT'
ROLLBACK TRANSACTION;
END CATCH;
IF @@trancount>0
COMMIT TRANSACTION
Hasil Eksekusi :
Tabel Pasien
Tabel Resep
5. Rekam
Medis Pasien
Transaksi
ini digunakan untuk manipulasi data rekam medis pasien yang melibatkan
beberapa tabel
yaitu tabel pasien,
dan tabel rekam_medis. Transaksi rekam medis dengan tujuan untuk data rekam
medis pasien dimana tabel pasien berelasi dengan tabel rekam_medis.
BEGIN TRANSACTION ;
BEGIN TRY
INSERT INTO
pasien
(nama_pasien,
jenis_kelamin,umur,alamat_pasien,
no_telp_pasien,
id_perawat, id_dokter,
id_resep)
values('Ayu','Perempuan',29,'Jalan Mawar 12 Malang',
'089789765909',1,2,1)
INSERT INTO
rekam_medis
(id_pasien,
cek_fisik, diagnosa,
keluhan) VALUES
(15, 'cek gigi', 'iritasi akar gigi','gigi sakit')
END TRY
BEGIN CATCH
IF @@trancount>0
PRINT 'GAGAL INSERT'
ROLLBACK TRANSACTION;
END CATCH;
IF @@trancount>0
COMMIT TRANSACTION
Anda baru saja membaca artikel yang berkategori Basis Data
dengan judul Transaction Basisdata. Anda bisa bookmark halaman ini dengan URL https://aina-tunk.blogspot.com/2015/04/transaction-basisdata.html. Terima kasih!
Ditulis oleh:
Tunk-Tunk - Rabu, 01 April 2015
Belum ada komentar untuk "Transaction Basisdata"
Posting Komentar