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?