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

Atomisitas dan perubahan data terkait

Misi: Transfer dan pembayaran di koperasi

Setelah pelajaran ini kamu bisa menulis transfer, pembayaran tagihan, dan setoran massal yang tersimpan seluruhnya atau tidak sama sekali, diperiksa pada kondisi awal, skenario berhasil, skenario gagal, dan konsistensi data akhir.

±17 menitDiperiksa 7 Okt 2026

Materi

Sebuah koperasi simpan pinjam di Yogyakarta memindahkan aplikasi kasirnya ke SQLite. Setiap uang yang berpindah harus meninggalkan jejak di tabel mutasi, dan total seluruh saldo hanya boleh berubah karena setoran atau pembayaran, bukan karena transfer antaranggota. Misi ini memeriksa kodemu lewat empat pemeriksaan: kondisi awal sebelum fungsi dipanggil, hasil pada skenario berhasil, hasil pada skenario gagal, dan konsistensi data akhir. Contoh konsistensi: total saldo sebelum dan sesudah transfer sama, dan jumlah baris mutasi sebuah transfer adalah nol.

Urutan kerja yang dipakai di semua latihan misi ini: periksa masukan yang bisa diperiksa tanpa basis data sebelum BEGIN; buka transaksi; jalankan pernyataan dan periksa rowcount pada setiap langkah yang harus mengenai tepat satu baris; bila ada yang gagal, ROLLBACK lalu laporkan kegagalannya; bila semuanya berhasil, COMMIT satu kali.

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

Telusuri transaksi ini pada koneksi isolation_level=None. Saldo awal rekening 1 Rp500.000, dan rekening 7 tidak ada. Apa hasilnya?

conn.execute("BEGIN")
conn.execute("UPDATE rekening SET saldo = saldo - 50000 WHERE id = 1")
conn.execute("UPDATE rekening SET saldo = saldo + 50000 WHERE id = 7")
conn.execute("COMMIT")
Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke