Sequence · Lost update

Hai phiên cùng cộng 100 vào số dư 1000

Hai phiên cùng cộng 100 vào số dư 1000 Phiên A và phiên B cùng đọc so_du 1000. A ghi 1100 rồi commit, B cũng ghi 1100. Ở READ COMMITTED lệnh của B thành công và ghi đè, số dư cuối 1100, mất một lần cộng mà không có lỗi. Ở REPEATABLE READ, B nhận ERROR 40001, bị huỷ, số dư vẫn 1100 và ứng dụng phải thử lại. ALT [READ COMMITTED] [REPEATABLE READ] SELECT SO_DU 1000 SELECT SO_DU 1000 UPDATE 1100 · COMMIT UPDATE 1100 OK · GHI ĐÈ ERROR 40001 số dư cuối 1100 · mất một lần cộng · không lỗi B bị huỷ · số dư 1100 · ứng dụng phải thử lại Phiên Ađọc · cộng 100 · ghi Bảng tkid = 1 · so_du = 1000 Phiên Bđọc · cộng 100 · ghi CHÚ GIẢI Lệnh gửi tới database Kết quả trả về Lỗi ứng dụng phải bắt và thử lại © tiennhm