Transaksi Database dengan Aplikasi

image

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

https://images.openai.com/static-rsc-4/yAWUit9Fpc79sYKUFSKJx6aw5L9Z7Z0lWmRhEqxEuS5vJw6aF25AYPmUTEJ2dzeSjdJd6dXR8cdCc0slxuHBs1EMofWu4ZPY8Oh2E_vbHgE_7QxyZcYxhS-qeY6PmnzMTKypOHiMKvcyDW11ZN2ogl9zdytjoepVpo7o4MILcUlBOaxwBcddaSyQOEG11zBe?purpose=fullsize
https://images.openai.com/static-rsc-4/HLdwybup1IK8Yzg1xuaN1HsT1Mxj1n2Mie97gA2Bg7ohiEQv4cedaOEYAkdIv1aP223qganyYe-MLWjGEOu2CyKNIwvoLK-mTX05n4EQI8wfwwFByxqOgB2rgkSMiYhZ4roOBkHBjFlnaGVC6GLMmieJgIkbGSXs0rmL20fO2ZEuoF0lgh5X1yYcGvDHTTS5?purpose=fullsize
https://images.openai.com/static-rsc-4/2UOWEiMpG5g1KiWb6y9GitUbmQhVc7htc6rxLR58MHhD1xuTI5FNo_yJ5rxt3MljLjZ-fA8VvrkFQGaFXI-6JmI9WJKVzDGFWNpc02aj4qKzVUaDzDPTbstzIzqTstd1LcKGZq6LT42nmC6ilgizthpmXdWVlxlKxPzhzKUM7YykgIg0TCB_A6PBYPaE32hk?purpose=fullsize

6

πŸ“Œ ACID:

  • Atomicity β†’ semua atau tidak sama sekali
  • Consistency β†’ data tetap valid
  • Isolation β†’ transaksi tidak saling ganggu
  • Durability β†’ data tersimpan permanen

4. πŸ”„ Alur Transaksi

https://images.openai.com/static-rsc-4/Vxe-2zOqYdVmamNkGf8hNw5NEK6HX5gV0yZVBKQA6kdu0SspLBdv57aBCfWn_yn1r2r7wEsRiVcqEbM5HwD-r6rSnud8vPYVeYFjsuJDNqzpEUyII6a9C4lZBiJUQbQXNqsw44ALwg8Krv3UKOEoiACNYI6QHfSFKP813ZdA31ILcWVQxWvBCuL22QLh0tlo?purpose=fullsize
https://images.openai.com/static-rsc-4/tbNz2rcKfy2lYN8GnvOmJU4hV0deQkvS8KPnrrNvpXebeVJLkNB4Ipz33bIv_efdWVB7BpI2LzhK4Ycb7YSjL-NmhKTVVGAHA-nqKBbFThk6gUJRwEW1ozG4RgZC_a6dR8CINynn-wToTWs3LW1CtCKF0MMLxKNzKIjwGoZV7q_tZScdjRH01dMwlT9m4U9m?purpose=fullsize
https://images.openai.com/static-rsc-4/zJJH2KbToz2--xZrMxtmf4S-4B0xZm2memxjP93ShOnNjctD5FKfVEvET0OOtvpE0d6JOxWwX1f4KTv3YPpS1RH0EzjXB1lNzHLfU1p7lEznvEgGIJNkVJpBd-9lA9p1WW28OipwFkx_0Vc7EtUshr5NzPNYh9kUwNXVjdzvZigYvyeG3-8y_XsF6B1ui40K?purpose=fullsize

7

πŸ“Œ Tahapan:

  1. BEGIN / START TRANSACTION
  2. Proses query
  3. COMMIT (berhasil)
  4. 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!)

https://images.openai.com/static-rsc-4/zJJH2KbToz2--xZrMxtmf4S-4B0xZm2memxjP93ShOnNjctD5FKfVEvET0OOtvpE0d6JOxWwX1f4KTv3YPpS1RH0EzjXB1lNzHLfU1p7lEznvEgGIJNkVJpBd-9lA9p1WW28OipwFkx_0Vc7EtUshr5NzPNYh9kUwNXVjdzvZigYvyeG3-8y_XsF6B1ui40K?purpose=fullsize
https://images.openai.com/static-rsc-4/CIBR6wBqexOdtBNFYHHXrG0x2D42MUrRwQ3v2qukJXsUprh54kmnGpP42rXelbD9EXNh2Rt64Y4o1X7Z_RkcfrHbQFchP8sB9WEHXZ9n2u93jmrjDZAQk4C8EHTBPL2FfBLQXqPHo9R625CXD2VORReG8Arn13PhQ5E_otBXAgYTd2ralYg98iyLEyilZ2H1?purpose=fullsize
https://images.openai.com/static-rsc-4/Rw-vFbd-mONPzF8LsSqbLB2H2j6YkCR07Fns2FEgmWs-iJEcWQOlc-_E0X5RulE91fqXahLnw7Gy3NHv2CNZdeIWLrCokQ-jV4zkTc5rulbVRE2rZa96SHJaHyMOW0TZbiDuX28sjfTWqnuoFXG8d5Gop3eRz68mtY8YzafaZwI6MzDwsG2NCw7nuTecgTP_?purpose=fullsize

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

https://images.openai.com/static-rsc-4/-kZHM7wWwjQzcNHIvJ8xYo2yde0w4MoFp6AhS3BZ7F2yiW0a9RJPB3iL07zKprYAydNHUjpjgj9aFzYUv32RU4vSnuaqcQo3oNALR3m7zZpP5G-jH8ce6mSh4hRN3tWMA_VorTwbNJ5LzKnx1kueTd79SPOo27uoY4MAS6NjpJP0NbFvo1gGsu7X4qInBo00?purpose=fullsize
https://images.openai.com/static-rsc-4/CXW9zelMNkkRS3GOs_Ufk8fUgeIf9RxZpyZtLHuQ2cA4yeQlgdIL4a_9gvl7XWx8vHzXrwy0SSBm9pFY0HOeBISv2PR-rkeDYu8uk5hVB7kTMQkeUx5jdga8c6Yjs2nb2tRBKr8vUe1Law94NTIzLReioheqPiuYEhMPsb1Pj05sBnsb_FW75lvfMOy7RDbv?purpose=fullsize
https://images.openai.com/static-rsc-4/_SulHBhBTcZf3dR-Xm8Iam3eWZlKQUSHhqxVHK4rKmuFFb3ek3rF0QLbN4BcS3bl_StMZgMYWWrEPqcLlz2Cn9NZZURhAJDecqWfJSgHUhFjeVdHZZvcKcqv4dLv65Y4OBCWOhpUQIiHNnXsCgek2-JBtVluMRuwxaGPCKfw9sZ6C8DPC3YVL8cUx9uaknMj?purpose=fullsize

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

https://images.openai.com/static-rsc-4/eBF3AhDp1CjivTpiukS6pn_PCcnSJGCcwTnFCi5I4lxCik9_B-CjHk9EgCDnLkAlcc-4BXZVA-ETVe51VXOjJP_M69ljX4XCE5e1bDibis-hqL69JdZLbipXyGL8ik8qYWks7Wlk7igXBgrzx_igZkAQ6LkmT_wDglB_f_ijNrNJkLZsNA1nSpfJmodKC2nH?purpose=fullsize
https://images.openai.com/static-rsc-4/S7Fh5XJXarlVCJFjk5Xykv45aqPlf7bNqN5E7GE1NHddhpmunUR4Q8rNiIYQxQjFt6bCXPqG_VUJMZKW4pGig9hZ0XiIPADTMdGTBbzaWqX0XZm6SvCSFv_UZLlS83CtLsrVjbLVldbouZTfKN-54xQ8MXhYJjS6TDHNicBjpieIXEuO6KatRwoeP6NKq1_0?purpose=fullsize
https://images.openai.com/static-rsc-4/oFITM1CT8uI75QL5lWI6gRcccUaNqDACIGg-Wezl3Pu1aO6El0vt8KBXsfHkZO_1tjCKZcmhAQS0x-c-mhbiX0nd0ONKPYiY6nif_yRxIfLR9U372n4EkPnkZSMP6WVoJnEpLGb93yxjxg5d9-u4clzwtFkfljPz8REN_LeWgS6Dp0vQ9qP0gczFSxD4QUF-?purpose=fullsize

8

πŸ“Œ Ketentuan:

  1. Buat tabel:
    • Produk (stok)
    • Transaksi
  2. Saat transaksi:
    • Kurangi stok
    • Simpan transaksi
  3. Gunakan transaksi database

15. 🎯 Kesimpulan

  • Transaksi menjaga konsistensi data
  • ACID adalah konsep utama
  • COMMIT & ROLLBACK sangat penting
  • Wajib digunakan untuk proses penting

16. πŸ“š Diskusi

  1. Apa itu transaksi database?
  2. Jelaskan ACID!
  3. Apa fungsi COMMIT?
  4. Apa itu ROLLBACK?