Panduan Pemula untuk Transaksi SQL

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 mengembangkan topik ini bersama langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita masuk ke dalam!

SQL - Transactions

Apa Itu Transaksi SQL?

Bayangkan Anda di mesin ATM, menarik uang dari rekening Anda. Proses ini melibatkan beberapa langkah: memeriksa saldo Anda, mengurangi jumlahnya, dan mengeluarkan uang tunai. Tapi, apa jika mesin mogok di tengah proses? Anda tentu tidak mau kehilangan uang Anda, kan? Ini adalah tempat transaksi berguna!

Dalam SQL, transaksi adalah rangkaian operasi yang diperlakukan sebagai unit kerja tunggal. Itu seperti gelembung perlindungan di sekitar operasi basis data Anda, memastikan bahwa baik semua operasi sukses, atau none dari mereka. 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 mentransfer $100 dari satu rekening ke rekening lain. BEGIN TRANSACTION menandai permulaan transaksi kita, dan COMMIT menyelesaikannya. Jika ada yang salah antara dua titik ini, seluruh transaksi dapat dibatalkan, menjaga rekening kita tetap seimbang.

Properti Transaksi

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

Atomisitas

Atomisitas memastikan bahwa transaksi diperlakukan sebagai unit tunggal, tak terpisahkan. Itu semua atau nihil - baik semua operasi dalam transaksi sukses, atau none dari mereka.

Keserasian

Keserasian menjamin bahwa transaksi membawa basis data dari satu keadaan valid ke yang lain. Itu seperti memastikan Anda selalu memiliki jumlah uang yang benar di dompet Anda, tidak 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.

Ketahanan

Ketahanan memastikan bahwa setelah 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 praktis 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 dapat kembali nanti
RELEASE SAVEPOINT Menghapus titik simpan dalam transaksi
SET TRANSACTION Menentukan karakteristik untuk transaksi

mari kita jelajahi setiap perintah ini lebih detil!

Perintah COMMIT

Perintah COMMIT adalah seperti menekan tombol "Simpan" dalam permainan video. Itu menyelesaikan semua perubahan yang dibuat selama 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 tersedia. COMMIT di akhir membuat perubahan ini tetap.

Perintah ROLLBACK

ROLLBACK adalah tombol "Undo" Anda. Jika ada yang salah selama 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 cekpoint dalam transaksi Anda. Anda dapat membuat beberapa 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 menambah kursus baru. Ketika kita menyadari kita menugaskan instruktur yang salah, kita dapat kembali ke titik simpan dan membuat update yang benar.

Perintah RELEASE SAVEPOINT

Perintah RELEASE SAVEPOINT menghapus titik simpan yang Anda tidak lagi butuhkan. Itu seperti menghapus titik cekpoint 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 memperbarui harga produk. Setelah kita yakin update adalah benar, kita lepaskan 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 adalah dia, teman-teman! Kita telah melakukan perjalanan melalui tanah transaksi SQL, dari memahami apa itu mereka hingga menguasai perintah yang mengendalikan mereka. 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 dunia basis data. Mereka menjaga data kita konsisten dan aplikasi kita dapat dipercaya. Jadi berikutnya kali Anda bekerja pada proyek basis data, ingat untuk membungkus operasi penting Anda dalam transaksi - diri Anda masa depan (dan pengguna Anda) akan berterima kasih!

Selamat coding, dan mayatransaksi Anda selalu sukses!

Credits: Image by storyset