SQL Transaction
SQL akan langsung menjalankan syntax yang kita ketik dari atas ke bawah, bila terjadi error pada bagian tengah, maka bagian atas tetap sudah dijalankan dan bagian bawah belum dijalankan.
Dalam beberapa kasus, hal ini tidak baik untuk dilakukan karena kita harus menjamin bahwa syntax dapat dijalankan dari atas sampai bawah tanpa kesalahan sama sekali, atau bila ada error, syntax tidak perlu dijalankan.
SQL transaction membantu kita dalam hal ini.
Terdapat 4 jenis transaction paling umum:
- BEGIN
Untuk memulai suatu query dari atas ke bawah diperlukan syntax BEGIN;
BEGIN;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
..
- COMMIT
Untuk mengakhiri BEGIN diperlukan COMMIT. Commit juga dapat digunakan sebagai checkpoint untuk ROLLBACK.
BEGIN;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
COMMIT;
- ROLLBACK
Syntax ini digunakan untuk kembali ke kondisi semula sebelum query gagal dijalankan. Hanya dapat digunakan untuk rollback dari commit terakhir atau savepoint tertentu.
BEGIN;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
INSERT INTO .. VALUES ..;
ROLLBACK;
- SAVEPOINT
Untuk membuat suatu checkpoint tertentu sebelum mengeksekusi suatu syntax.
SQL> SAVEPOINT SP1;
SQL> DELETE FROM CUSTOMERS WHERE ID=1;
SQL> SAVEPOINT SP2;
SQL> DELETE FROM CUSTOMERS WHERE ID=2;
SQL> SAVEPOINT SP3;
SQL> DELETE FROM CUSTOMERS WHERE ID=3;
SQL> ROLLBACK TO SP2;