SQL - Transaksi: Panduan untuk Pemula

Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia transaksi SQL. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan menjelajahi topik ini bersama langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu yang Anda sukai), dan mari kita masuk ke dalam!

SQL - Transactions

Apa Itu Transaksi SQL?

Imaginasi Anda di ATM, mengambil uang dari rekening Anda. Proses ini melibatkan beberapa langkah: memeriksa saldo Anda, mengurangi jumlahnya, dan memberikan uang tunai. Tapi, apa bila mesin macet di pertengahan proses? Anda tentu tidak ingin kehilangan uang Anda, kan? Itu adalah saat transaksi berguna!

Dalam SQL, sebuah transaksi adalah sebuah urutan operasi yang dianggap sebagai satu unit kerja. Itu seperti bubuk pelindung di sekitar operasi basis data Anda, memastikan bahwa baik semua operasi itu berhasil, atau none dari mereka berhasil. Dengan cara ini, data Anda tetap konsisten dan dapat dipercaya.

mari lihat contoh sederhana:

BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 123;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 456;
COMMIT;

Dalam transaksi ini, kita sedang mentransfer $100 dari satu rekening ke rekening lain. BEGIN TRANSACTION menandai permulaan transaksi kita, dan COMMIT menyelesaikannya. Jika ada sesuatu yang salah antara dua titik ini, seluruh transaksi dapat dibatalkan, menjaga rekening kita tetap seimbang.

Properti Transaksi

Transaksi memiliki empat properti kunci, biasanya diingat dengan akronim ACID. mari kitauraikan mereka:

Atomisitas

Atomisitas memastikan bahwa sebuah transaksi dianggap sebagai satu unit, tak terpisahkan. Itu semua atau nihil - baik semua operasi dalam transaksi berhasil, atau none dari mereka berhasil.

Keselarasan

Konsistensi menjamin bahwa sebuah transaksi membawa basis data dari satu keadaan valid ke keadaan lain. Itu seperti memastikan Anda selalu memiliki jumlah uang yang benar di dompet Anda, tanpa matter berapa banyak pembelian Anda.

Isolasi

Isolasi menjaga transaksi terpisah dari yang lain. Itu seperti memiliki kamar pribadi di rumah bersama - apa yang terjadi dalam transaksi Anda tinggal dalam transaksi Anda sampai selesai.

Keteruskaan

Keteruskaan memastikan bahwa jika sebuah transaksi dikommit, itu tetap dikommit. Itu seperti mengukir inisial Anda di pohon - mereka masih akan ada meskipun ada badai.

Perintah Kendali Transaksi

Sekarang kita mengerti apa itu transaksi dan mengapa mereka penting, mari kita lihat perintah yang kita gunakan untuk mengendalikan mereka. Saya akan menyajikan ini dalam tabel untuk referensi mudah:

Perintah Deskripsi
BEGIN TRANSACTION Memulai transaksi baru
COMMIT Menyimpan perubahan yang dibuat dalam transaksi
ROLLBACK Membatalkan perubahan yang dibuat dalam transaksi
SAVEPOINT Membuat titik simpan dalam transaksi ke mana Anda bisa kembali kemudian
RELEASE SAVEPOINT Menghapus titik simpan dalam transaksi
SET TRANSACTION Menentukan karakteristik untuk transaksi

mari jelajahi masing-masing dari ini!

Perintah COMMIT

Perintah COMMIT adalah seperti menekan tombol "Simpan" dalam permainan video. Itu menyelesaikan semua perubahan yang dibuat dalam transaksi. mari lihat bagaimana Anda menggunakannya:

BEGIN TRANSACTION;
INSERT INTO students (name, age) VALUES ('Alice', 20);
UPDATE courses SET available_seats = available_seats - 1 WHERE course_id = 101;
COMMIT;

Dalam contoh ini, kita mendaftarkan Alice ke dalam kursus. Kita menambahkannya ke tabel students dan mengurangi jumlah kursi yang tersedia. COMMIT di akhir membuat perubahan ini permanen.

Perintah ROLLBACK

ROLLBACK adalah tombol "Undo" Anda. Jika ada sesuatu yang salah dalam transaksi, Anda dapat menggunakan ROLLBACK untuk membatalkan semua perubahan dan kembali ke keadaan sebelum transaksi dimulai.

BEGIN TRANSACTION;
DELETE FROM students WHERE name = 'Bob';
-- Ups! Kita tidak bermaksud menghapus Bob!
ROLLBACK;

Di sini, kita secara tidak sengaja menghapus Bob dari tabel students. Tetapi tidak perlu khawatir! Perintah ROLLBACK menyelamatkan hari dengan membatalkan penghapusan.

Perintah SAVEPOINT

SAVEPOINT adalah seperti membuat titik cek di dalam transaksi Anda. Anda dapat membuat banyak titik simpan dan kembali ke salah satu dari mereka jika diperlukan.

BEGIN TRANSACTION;
INSERT INTO courses (course_name, instructor) VALUES ('SQL 101', 'Prof. Smith');
SAVEPOINT new_course;

UPDATE instructors SET courses_taught = courses_taught + 1 WHERE name = 'Prof. Smith';
-- Ups! Prof. Smith sedang cuti akademik semester ini
ROLLBACK TO new_course;

UPDATE instructors SET courses_taught = courses_taught + 1 WHERE name = 'Prof. Johnson';
COMMIT;

Dalam contoh ini, kita membuat titik simpan setelah menambahkan kursus baru. Ketika kita menyadari kita menugaskan instruktur yang salah, kita dapat kembali ke titik simpan dan membuat perubahan yang benar.

Perintah RELEASE SAVEPOINT

Perintah RELEASE SAVEPOINT menghapus titik simpan yang Anda tidak lagi butuhkan. Itu seperti menghapus titik cek di dalam permainan saat Anda tahu Anda tidak akan kembali ke sana.

BEGIN TRANSACTION;
SAVEPOINT update_start;
UPDATE products SET price = price * 1.1;
-- Peningkatan harga sukses, kita tidak lagi memerlukan titik simpan ini
RELEASE SAVEPOINT update_start;
COMMIT;

Di sini, kita membuat titik simpan sebelum memperbaharui harga produk. Setelah kita yakin bahwa update itu benar, kita melepaskan titik simpan karena kita tidak lagi memerlukannya.

Perintah SET TRANSACTION

Perintah SET TRANSACTION memungkinkan Anda menentukan karakteristik untuk transaksi, seperti tingkat isolasi atau status read-only.

SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN TRANSACTION;
SELECT * FROM sensitive_data;
COMMIT;

Dalam contoh ini, kita menetapkan tingkat isolasi transaksi ke "READ COMMITTED" sebelum memulai transaksi. Ini memastikan kita hanya membaca data yang telah dikommit oleh transaksi lain, membantu mencegah pembacaan kotor.

Dan itu dia, teman-teman! Kita telah menjelajahi negeri transaksi SQL, dari memahami apa itu transaksi hingga menguasai perintah yang mengendalikannya. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba konsep ini dalam lingkungan uji yang aman.

Transaksi mungkin tampak abstrak pada awalnya, tetapi mereka seperti jaring keselamatan di dunia basis data. Mereka menjaga data kita konsisten dan aplikasi kita dapat dipercaya. Jadi berikutnya kali Anda bekerja di proyek basis data, ingat untuk membungkus operasi penting Anda dalam transaksi - diri Anda masa depan (dan pengguna Anda) akan berterima kasih!

Selamat coding, dan semoga transaksi Anda selalu berhasil commit!

Credits: Image by storyset