Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

Transaksi Basis Data: Menjaga Data Tetap Konsisten

Pelajaran 8 dari 14

Savepoint dan constraint

Constraint yang membatalkan pernyataan

Setelah pelajaran ini kamu bisa memakai CHECK, UNIQUE, dan NOT NULL yang sudah ada di skema sebagai penjaga terakhir transaksi, membedakan algoritma konflik ABORT dari ROLLBACK, dan membedakan perilaku SQLite dari PostgreSQL setelah galat.

±13 menitDiperiksa 7 Okt 2026

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.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 1 dari 3

Tabel stok punya CHECK (jumlah >= 0) dan tiga baris: 10, 7, dan 3. Pernyataan di bawah melanggar CHECK di baris ketiga. Berapa isi ketiga baris sesudahnya?

UPDATE stok SET jumlah = jumlah - 4;
Pilih satu jawaban

Latihan 3 dari 3

Tim memindahkan kode dari PostgreSQL ke SQLite. Di PostgreSQL, satu pernyataan yang gagal di tengah transaksi membuat blok transaksi aborted. Pernyataan mana yang benar untuk SQLite dengan algoritma konflik bawaan?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke