Materi
Constraint di skema — CHECK, UNIQUE, NOT NULL, PRIMARY KEY — diperiksa SQLite setiap kali baris ditulis. Pernyataan yang melanggarnya ditolak, dan di Python penolakan itu muncul sebagai sqlite3.IntegrityError. Pemeriksaan di kode aplikasi bisa terlewat atau memakai data yang sudah usang; constraint diperiksa tepat saat penulisan, sehingga ia menjadi penjaga terakhir bagi transaksi.
Apa yang dibatalkan saat constraint dilanggar ditentukan algoritma konflik. Bawaannya ABORT: pernyataan yang melanggar dibatalkan seluruhnya, perubahan dari pernyataan sebelumnya dalam transaksi yang sama tetap ada, dan transaksinya tetap aktif. Algoritma ROLLBACK membatalkan seluruh transaksi. ROLLBACK bisa dipasang di definisi constraint UNIQUE, NOT NULL, atau PRIMARY KEY, atau ditulis per pernyataan sebagai INSERT OR ROLLBACK dan UPDATE OR ROLLBACK; tidak berlaku untuk CHECK dan FOREIGN KEY.
BEGIN;
INSERT INTO kupon(kode) VALUES ('MERDEKA45');
INSERT OR ROLLBACK INTO kupon(kode) VALUES ('MERDEKA45'); -- UNIQUE: seluruh transaksi batal
PostgreSQL berbeda. Tutorial transaksinya menjelaskan bahwa galat menaruh blok transaksi dalam keadaan aborted, dan ROLLBACK TO ke savepoint menjadi satu-satunya cara mengambil kembali kendali tanpa membatalkan seluruhnya. Di SQLite dengan ABORT, transaksi tetap bisa dilanjutkan dan COMMIT menyimpan pernyataan yang berhasil. Kode yang dipindahkan antarbasis data perlu ROLLBACK eksplisit di jalur gagal supaya hasilnya sama di keduanya.