รายงานรวมยอดเห็นการหักเงินแล้วแต่ยังไม่เห็นการเพิ่มยอดจากงานเดียวกัน ควรป้องกันด้วยหลักใด?

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

เฉลยอธิบาย

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

ข้อสอบอื่นในวิชาความรู้เกี่ยวกับระบบฐานข้อมูล (Database System) และ ระบบการบริหารจัดการข้อมูล (Database Management System)

ดูข้อสอบวิชานี้ทั้งหมด →