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

Akses bersamaan dan pengantar isolasi

Pembaruan yang hilang

Setelah pelajaran ini kamu bisa mengenali pola baca-ubah-tulis yang menghilangkan perubahan koneksi lain, dan menggantinya dengan perubahan bersyarat dalam satu pernyataan yang hasilnya dibaca dari rowcount.

±13 menitDiperiksa 7 Okt 2026

Materi

Pola baca-ubah-tulis tampak wajar: baca stok ke variabel Python, hitung stok baru, lalu tulis angka itu kembali dengan UPDATE … SET stok = ?. Bila koneksi lain mengubah stok yang sama di antara baca dan tulis, angka yang ditulis berasal dari keadaan lama, dan perubahan koneksi lain itu tertimpa. Inilah pembaruan yang hilang (lost update). Tidak ada galat yang muncul; datanya salah secara diam-diam.

Perbaikannya: biarkan basis data menghitung dari nilai saat pernyataan dijalankan. UPDATE produk SET stok = stok - ? WHERE kode = ? AND stok >= ? membaca, memeriksa, dan menulis dalam satu pernyataan. SQLite hanya mengizinkan satu penulis pada satu waktu — halaman isolasinya menyebut penulisan diserialkan — jadi pernyataan dari dua koneksi berjalan bergiliran dan masing-masing melihat hasil yang lain. Contoh transfer di dokumentasi isolasi PostgreSQL bertumpu pada pola yang sama: balance = balance + 100.

Pola yang sama berlaku untuk periksa-lalu-ubah, misalnya memesan kursi: SELECT untuk melihat apakah kursi kosong, lalu UPDATE untuk mengisinya. Gabungkan keduanya menjadi UPDATE … WHERE pemesan IS NULL, lalu periksa rowcount untuk mengetahui siapa yang menang.

cur = conn.execute(
    "UPDATE kamar SET tamu = ? WHERE nomor = ? AND tamu IS NULL",
    ("Bu Ratna", "204"),
)
berhasil = cur.rowcount == 1

Latihan

0/3 lulus

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

Latihan 1 dari 3

Dua kasir melayani pembeli kopi Toraja bersamaan. Stok awal 5. Kasir A membaca stok 5, kasir B membaca stok 5, kasir A menulis stok = 4, lalu kasir B menulis stok = 4. Apa nama masalah ini?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke