Transaction Control Language
Transaksi dalam SQL adalah urutan satu atau lebih pernyataan SQL yang dianggap sebagai satu unit kerja tunggal. Transaksi digunakan untuk memastikan konsistensi dan integritas data dalam database.
Sintaks Dasar
BEGIN TRANSACTION;
-- Pernyataan SQL
COMMIT;
BEGIN TRANSACTION
: Memulai transaksi baru.COMMIT
: Mengakhiri transaksi saat ini dan membuat semua perubahan permanen.ROLLBACK
: Mengakhiri transaksi saat ini dan mengembalikan semua perubahan yang dilakukan sejak transaksi dimulai.SAVEPOINT
: Membuat titik simpanan dalam transaksi yang dapat digunakan untuk mengembalikan ke titik tertentu dalam transaksi.
Contoh 1 - Transaksi Dasar
Jika kita ingin memperbarui tabel “customer” dan tabel “order” sebagai bagian dari satu transaksi tunggal, kita dapat menggunakan SQL berikut:
BEGIN TRANSACTION;
UPDATE customer
SET country = 'USA'
WHERE name = 'John';
UPDATE order
SET status = 'Shipped'
WHERE customer_id = 1;
COMMIT;
Ini akan memperbarui tabel “customer” dan tabel “order” sebagai bagian dari satu transaksi tunggal. Semua perubahan akan dikembalikan jika terjadi kesalahan selama transaksi.
Contoh 2 - Transaksi Rollback
Jika kita ingin memperbarui tabel “customer” dan tabel “order” sebagai bagian dari satu transaksi tunggal, tetapi ingin mengembalikan perubahan jika terjadi kesalahan, kita dapat menggunakan SQL berikut:
BEGIN TRANSACTION;
UPDATE customer
SET country = 'USA'
WHERE name = 'John';
UPDATE order
SET status = 'Shipped'
WHERE customer_id = 1;
IF @@ERROR <> 0
BEGIN
ROLLBACK;
END
ELSE
BEGIN
COMMIT;
END
Ini akan memperbarui tabel “customer” dan tabel “order” sebagai bagian dari satu transaksi tunggal. Semua perubahan akan dikembalikan jika terjadi kesalahan selama transaksi.
Contoh 3 - Titik Simpanan
Jika kita ingin membuat titik simpanan dalam transaksi yang dapat kita kembalikan jika diperlukan, kita dapat menggunakan SQL berikut:
BEGIN TRANSACTION;
UPDATE customer
SET country = 'USA'
WHERE name = 'John';
SAVEPOINT update_order;
UPDATE order
SET status = 'Shipped'
WHERE customer_id = 1;
IF @@ERROR <> 0
BEGIN
ROLLBACK TO update_order;
END
ELSE
BEGIN
COMMIT;
END
Ini akan memperbarui tabel “customer” dan membuat titik simpanan yang disebut “update_order”. Jika terjadi kesalahan selama pernyataan pembaruan kedua, transaksi akan dikembalikan ke titik simpanan “update_order”.
Bacaan Lebih Lanjut
- MySQL Transactions - MySQL Tutorial
- BEGIN TRANSACTION (Transact-SQL) - Dokumen Microsoft
- COMMIT TRANSACTION (Transact-SQL) - Dokumen Microsoft
- ROLLBACK TRANSACTION (Transact-SQL) - Dokumen Microsoft
- SAVE TRANSACTION (Transact-SQL) - Dokumen Microsoft