1. ๐ Pengertian Transaksi Database
Transaksi database adalah sekumpulan operasi (query) yang dijalankan sebagai satu kesatuan.
Jika satu gagal โ semua dibatalkan (rollback).
Jika semua berhasil โ disimpan (commit).
2. ๐ฏ Tujuan Transaksi
- Menjaga konsistensi data
- Menghindari kesalahan saat proses multi-query
- Menjamin integritas database
3. ๐ง Konsep ACID
6
๐ ACID:
- Atomicity โ semua atau tidak sama sekali
- Consistency โ data tetap valid
- Isolation โ transaksi tidak saling ganggu
- Durability โ data tersimpan permanen
4. ๐ Alur Transaksi
7
๐ Tahapan:
- BEGIN / START TRANSACTION
- Proses query
- COMMIT (berhasil)
- ROLLBACK (gagal)
5. ๐ฆ Contoh Kasus Transaksi
Transfer Uang:
- Kurangi saldo A
- Tambah saldo B
โก๏ธ Harus berhasil keduanya atau gagal semuanya
6. ๐ ๏ธ Perintah SQL Transaksi
START TRANSACTION;UPDATE rekening SET saldo = saldo - 100 WHERE id = 1;
UPDATE rekening SET saldo = saldo + 100 WHERE id = 2;COMMIT;
๐ Jika gagal:
ROLLBACK;
7. โ ๏ธ Tanpa Transaksi (Bahaya!)
6
โก๏ธ Bisa menyebabkan:
- Data tidak konsisten
- Saldo tidak seimbang
8. ๐ป Implementasi PHP + MySQL
๐ Contoh Transaksi
<?php
$conn = mysqli_connect("localhost","root","","bank");// Mulai transaksi
mysqli_begin_transaction($conn);try {
mysqli_query($conn, "UPDATE rekening SET saldo = saldo - 100 WHERE id=1");
mysqli_query($conn, "UPDATE rekening SET saldo = saldo + 100 WHERE id=2"); // Simpan perubahan
mysqli_commit($conn);
echo "Transaksi berhasil";} catch (Exception $e) {
mysqli_rollback($conn);
echo "Transaksi gagal";
}
?>
9. ๐ Transaksi dengan Validasi
<?php
$saldo = mysqli_fetch_assoc(mysqli_query($conn, "SELECT saldo FROM rekening WHERE id=1"));if($saldo['saldo'] >= 100){
mysqli_begin_transaction($conn); mysqli_query($conn, "UPDATE rekening SET saldo = saldo - 100 WHERE id=1");
mysqli_query($conn, "UPDATE rekening SET saldo = saldo + 100 WHERE id=2"); mysqli_commit($conn);
}else{
echo "Saldo tidak cukup";
}
?>
10. ๐งฉ Jenis Transaksi
- Manual Transaction
- Auto Commit (default MySQL)
- Distributed Transaction
11. โ๏ธ Auto Commit
7
SET autocommit = 0;
12. ๐ง Studi Kasus Aplikasi
Sistem Penjualan:
- Insert transaksi
- Update stok
โก๏ธ Harus dalam 1 transaksi
13. ๐งช Latihan Sederhana
๐ฏ Latihan 1:
Buat tabel:
- rekening (id, saldo)
๐ฏ Latihan 2:
Simulasikan:
- Transfer saldo
๐ฏ Latihan 3:
Gunakan:
- COMMIT
- ROLLBACK
14. ๐ Tugas Praktikum
๐ฏ Tugas: Sistem Penjualan
8
๐ Ketentuan:
- Buat tabel:
- Produk (stok)
- Transaksi
- Saat transaksi:
- Kurangi stok
- Simpan transaksi
- Gunakan transaksi database
15. ๐ฏ Kesimpulan
- Transaksi menjaga konsistensi data
- ACID adalah konsep utama
- COMMIT & ROLLBACK sangat penting
- Wajib digunakan untuk proses penting
16. ๐ Diskusi
- Apa itu transaksi database?
- Jelaskan ACID!
- Apa fungsi COMMIT?
- Apa itu ROLLBACK?