Traffine I/O

Bahasa Indonesia

2023-03-05

Transaksi dalam MySQL

Apa itu Transaksi

Transaksi dalam dunia database adalah unit kerja yang dieksekusi sebagai operasi tunggal dan atomik. Ini adalah urutan logis dari satu atau lebih manipulasi data, dibungkus sebagai unit yang koheren dan dapat diandalkan. Transaksi mengikuti properti ACID. Transaksi memastikan bahwa urutan operasi ini dieksekusi sepenuhnya atau tidak sama sekali, dan perubahan yang dilakukan dalam transaksi disimpan secara permanen.

Memulai Transaksi: BEGIN atau START TRANSACTION

Transaksi dalam MySQL dimulai dengan penggunaan perintah BEGIN atau START TRANSACTION. Pilihan antara kedua perintah ini lebih pada preferensi pribadi dan keterbacaan dalam skrip SQL Anda. Ketika perintah-perintah ini diberikan, MySQL memulai blok transaksi baru dan semua perintah berikutnya akan menjadi bagian dari blok ini hingga selesai.

Mengakhiri Transaksi: COMMIT

Perintah COMMIT digunakan untuk mengakhiri blok transaksi. Perintah ini membuat semua perubahan yang dilakukan dalam transaksi saat ini menjadi permanen. Setelah eksekusi perintah ini, tidak ada rollback yang dapat dilakukan. Penggunaan perintah COMMIT menandakan akhir yang sukses dari sebuah transaksi.

Menghentikan Transaksi: ROLLBACK

Di sisi lain, jika Anda ingin menghentikan transaksi tanpa membuat perubahan menjadi permanen, Anda dapat menggunakan perintah ROLLBACK. Perintah ini mengembalikan semua perubahan yang dilakukan dalam transaksi saat ini. Dengan kata lain, ini seolah-olah transaksi tidak pernah terjadi. Ini berguna dalam kasus ketika Anda menghadapi kesalahan atau masalah di tengah transaksi dan ingin mengembalikan ke keadaan sebelum transaksi dimulai.

Operasi ROLLBACK

Saya akan menjelaskan bagaimana perintah ROLLBACK berfungsi dalam transaksi MySQL. Untuk mengilustrasikannya, kita akan menggunakan contoh sederhana yang melibatkan perubahan pada tabel users.

Keadaan Sebelum Transaksi

Pertimbangkan contoh gambaran tabel users berikut:

mysql> SELECT * FROM users;
+----+------+
| id | name |
+----+------+
|  1 | John |
|  2 | Jane |
|  3 | Jack |
+----+------+
3 rows in set (0.00 sec)

Di sini, kita memiliki sebuah tabel dengan tiga pengguna: John, Jane, dan Jack.

Memulai dan Melaksanakan Transaksi

Sekarang, mari mulai sebuah transaksi dengan niat untuk mengubah nama pengguna dengan id = 1:

mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)

mysql> UPDATE `users` SET `name` = "James" WHERE `id` = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Pada titik ini, dalam transaksi kita, kita telah mengubah nama John menjadi James.

Menghentikan Transaksi dengan ROLLBACK

Misalkan kita menghadapi masalah atau berubah pikiran tentang pembaruan ini. Kita dapat menghentikan transaksi tanpa melakukan commit pada perubahan tersebut:

mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)

Perintah ROLLBACK akan mengembalikan semua perubahan yang dilakukan dalam transaksi saat ini.

Memverifikasi Keadaan Setelah ROLLBACK

Setelah transaksi di-rollback, kita dapat memverifikasi bahwa tabel pengguna telah kembali ke keadaan awal:

mysql> SELECT * FROM users;
+----+------+
| id | name |
+----+------+
|  1 | John |
|  2 | Jane |
|  3 | Jack |
+----+------+
3 rows in set (0.00 sec)

Seperti yang dapat kita lihat, nama pengguna telah kembali menjadi John, yang menunjukkan efek perintah ROLLBACK dalam membatalkan perubahan yang dilakukan dalam transaksi.

Operasi COMMIT

Sekarang, saya akan menunjukkan perintah COMMIT dalam transaksi MySQL. Mari lanjutkan dengan contoh tabel users untuk memahami operasi ini dengan lebih baik.

Keadaan Sebelum Transaksi

Berikut adalah keadaan awal tabel users:

mysql> SELECT * FROM users;
+----+------+
| id | name |
+----+------+
|  1 | John |
|  2 | Jane |
|  3 | Jack |
+----+------+
3 rows in set (0.00 sec)

Kita memiliki tiga pengguna dalam tabel ini: John, Jane, dan Jack.

Memulai dan Melaksanakan Transaksi

Sekarang, kita akan memulai transaksi dengan niat untuk mengubah nama pengguna dengan id = 1:

mysql> BEGIN;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE `users` SET `name` = "James" WHERE `id` = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Dalam lingkup transaksi kita, kita telah mengubah nama John menjadi James.

Mengakhiri Transaksi dengan COMMIT

Jika kita puas dengan perubahan ini dan ingin membuatnya permanen, kita dapat mengakhiri transaksi dengan COMMIT:

mysql> COMMIT;
Query OK, 0 rows affected (0.00 sec)

Perintah COMMIT memiliki efek membuat semua perubahan yang dilakukan dalam transaksi saat ini menjadi permanen.

Memverifikasi Keadaan Setelah COMMIT

Sekarang, mari verifikasi keadaan tabel users setelah transaksi:

mysql> SELECT * FROM users;
+----+------+
| id | name |
+----+------+
|  1 | James |
|  2 | Jane  |
|  3 | Jack  |
+----+------+
3 rows in set (0.00 sec)

Seperti yang dapat kita amati, nama pengguna telah diperbarui menjadi James. Ini menunjukkan efek operasi COMMIT, yang secara permanen menerapkan perubahan yang dilakukan dalam transaksi.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!