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 7 dari 14

BEGIN, COMMIT, dan ROLLBACK di modul sqlite3 Python

Misi: Alur pemesanan toko daring

Setelah pelajaran ini kamu bisa memperbaiki alur pemesanan, pembatalan, dan perubahan jumlah pesanan supaya stok, pesanan, dan detailnya selalu berubah bersama, diperiksa pada kondisi awal, skenario berhasil, skenario gagal, dan konsistensi data akhir.

±17 menitDiperiksa 7 Okt 2026

Materi

Toko daring kopi dan teh di Makassar mencatat pesanan dalam tiga tabel: produk (dengan stok), pesanan (pelanggan, total, status), dan detail (barang per pesanan). Satu pesanan menyentuh ketiganya. Laporan stok minggu lalu tidak cocok dengan detail pesanan: ada stok yang berkurang tanpa detail, dan ada pesanan batal yang stoknya dikembalikan dua kali.

Setiap latihan di misi ini diperiksa empat kali. Kondisi awal dicatat sebelum fungsimu dipanggil. Skenario berhasil harus tersimpan dan terlihat dari koneksi lain. Skenario gagal — stok kurang, barang tidak dikenal, status yang salah, atau satu pernyataan yang sengaja digagalkan test — tidak boleh meninggalkan perubahan apa pun. Terakhir, konsistensi: untuk setiap produk, stok awal dikurangi stok akhir sama dengan jumlah barang di detail pesanan yang tidak batal.

Latihan

0/4 lulus

Misi akhir modul: luluskan minimal 4 dari 4 tugas. Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 4

Koneksi dibuka dengan isolation_level bawaan. Stok KP01 mula-mula 10 dan TH02 4. Berapa stok keduanya setelah rollback()?

conn = sqlite3.connect("toko.db")
conn.execute("UPDATE produk SET stok = stok - 2 WHERE kode = 'KP01'")
conn.executescript("CREATE TABLE IF NOT EXISTS log(isi TEXT);")
conn.execute("UPDATE produk SET stok = stok - 1 WHERE kode = 'TH02'")
conn.rollback()
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke