รายงานรวมยอดเห็นการหักเงินแล้วแต่ยังไม่เห็นการเพิ่มยอดจากงานเดียวกัน ควรป้องกันด้วยหลักใด?
กเปิดเผยทุกขั้นทันทีเพื่อให้รายงานเห็นผลเร็ว แล้วแก้ยอดภายหลังหาก transaction ล้มเหลว
ขcommit หลังการหักเงินก่อน แล้วเริ่ม transaction ใหม่สำหรับการเพิ่มยอดปลายทาง
คไม่เปิดเผยการเปลี่ยนแปลงระหว่างทางให้ session อื่นเห็นก่อน transaction สำเร็จ
งใช้ ORDER BY กับรายงานเพื่อให้รายการหักและเพิ่มยอดปรากฏติดกันในผลลัพธ์
เฉลยอธิบาย
การเปลี่ยนแปลงภายใน transaction จะมองไม่เห็นจาก transaction อื่นจนกว่าจะ commit ดังนั้นคำตอบที่เหมาะที่สุดคือ “ไม่เปิดเผยการเปลี่ยนแปลงระหว่างทางให้ session อื่นเห็นก่อน transaction สำเร็จ” ส่วนตัวลวงที่ใกล้เคียงที่สุดไม่ผ่านเพราะ ทำให้ session อื่นอาจเห็นสถานะกลางทางที่ไม่สมบูรณ์