SQLite - Transaksi

Transaksi adalah unit kerja yang dilakukan terhadap database. Transaksi adalah unit atau urutan pekerjaan yang diselesaikan dalam urutan logis, baik secara manual oleh pengguna atau secara otomatis oleh beberapa jenis program database.

Transaksi adalah penyebaran satu atau lebih perubahan ke database. Misalnya, jika Anda membuat, memperbarui, atau menghapus record dari tabel, maka Anda sedang melakukan transaksi di atas tabel. Penting untuk mengontrol transaksi untuk memastikan integritas data dan untuk menangani kesalahan database.

Praktisnya, Anda akan menggabungkan banyak kueri SQLite ke dalam sebuah grup dan Anda akan mengeksekusi semuanya bersama sebagai bagian dari transaksi.

Sifat Transaksi

Transaksi memiliki empat sifat standar berikut, biasanya disebut dengan singkatan ACID.

  • Atomicity- Memastikan bahwa semua operasi dalam unit kerja diselesaikan dengan sukses; jika tidak, transaksi dibatalkan pada titik kegagalan dan operasi sebelumnya digulung kembali ke keadaan semula.

  • Consistency - Memastikan bahwa database dengan benar mengubah status setelah transaksi berhasil dilakukan.

  • Isolation - Memungkinkan transaksi untuk beroperasi secara independen dan transparan satu sama lain.

  • Durability - Memastikan bahwa hasil atau efek dari transaksi yang dilakukan tetap ada jika terjadi kegagalan sistem.

Kontrol Transaksi

Berikut adalah perintah berikut yang digunakan untuk mengontrol transaksi:

  • BEGIN TRANSACTION - Untuk memulai transaksi.

  • COMMIT - Untuk menyimpan perubahan, Anda dapat menggunakan alternatif END TRANSACTION perintah.

  • ROLLBACK - Untuk mengembalikan perubahan.

Perintah kontrol transaksional hanya digunakan dengan perintah DML INSERT, UPDATE, dan DELETE. Mereka tidak dapat digunakan saat membuat tabel atau menjatuhkannya karena operasi ini secara otomatis dilakukan dalam database.

MULAI Perintah TRANSAKSI

Transaksi dapat dimulai menggunakan BEGIN TRANSACTION atau cukup BEGIN perintah. Transaksi seperti itu biasanya bertahan sampai perintah COMMIT atau ROLLBACK berikutnya ditemukan. Namun, transaksi juga akan ROLLBACK jika database ditutup atau jika terjadi kesalahan. Berikut ini adalah sintaks sederhana untuk memulai transaksi.

BEGIN;
or 
BEGIN TRANSACTION;

KOMIT KOMIT

Perintah COMMIT adalah perintah transaksional yang digunakan untuk menyimpan perubahan yang dilakukan oleh transaksi ke database.

Perintah COMMIT menyimpan semua transaksi ke database sejak perintah COMMIT atau ROLLBACK terakhir.

Berikut ini adalah sintaks untuk perintah COMMIT.

COMMIT;
or
END TRANSACTION;

Perintah ROLLBACK

Perintah ROLLBACK adalah perintah transaksional yang digunakan untuk membatalkan transaksi yang belum disimpan ke database.

Perintah ROLLBACK hanya dapat digunakan untuk membatalkan transaksi sejak perintah COMMIT atau ROLLBACK terakhir dikeluarkan.

Berikut adalah sintaks untuk perintah ROLLBACK.

ROLLBACK;

Example

Pertimbangkan tabel PERUSAHAAN dengan catatan berikut.

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Sekarang, mari kita mulai transaksi dan menghapus record dari tabel yang memiliki age = 25. Kemudian, gunakan perintah ROLLBACK untuk membatalkan semua perubahan.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> ROLLBACK;

Sekarang, jika Anda memeriksa tabel PERUSAHAAN, masih ada catatan berikut -

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

Mari kita mulai transaksi lain dan hapus catatan dari tabel yang memiliki age = 25 dan terakhir kita menggunakan perintah COMMIT untuk melakukan semua perubahan.

sqlite> BEGIN;
sqlite> DELETE FROM COMPANY WHERE AGE = 25;
sqlite> COMMIT;

Jika Anda sekarang memeriksa tabel PERUSAHAAN masih memiliki catatan berikut -

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
3           Teddy       23          Norway      20000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0