The lost update problem

@ ปัญหานี้จะมีสาเหตุมาจากมี 2 transaction หรือมากกว่ามีการเรียกใช้ข้อมูลเดียวกัน และต่างฝ่ายต่างปรับปรุงค่าของข้อมูล ซึ่งอาจจะทำให้การปรับปรุงข้อมูลของฝ่ายใดฝ่ายหนึ่งสูญหายไปได้ ทำให้อีกฝ่ายได้รับข้อมูลผิดพลาด ดังเช่นตัวอย่างลำดับการทำงานของสอง transaction ต่อไปนี้

transaction "a" time transaction "b"

read ค่า X ;

t1

 
 

t2

read ค่า X ;

X:= X+ 3 ;

t3

 
 

t4

X:=X-5 ;

สมมติว่าทั้ง 2 รายการเป็นการจองตั๋วเครื่องบินโดย 2 บริษัท a และ b โดย บริษัท a เรียกข้อมูลจำนวนที่นั่งที่เหลือ ( X ) ขึ้นมาโดยมีค่าเริ่มต้นเท่ากับ 4 ที่ และ บริษัท b ก็เรียกข้อมูลเหมือนกันในเวลา t2 ต่อมา ณ เวลา t3 บริษัท a ได้ยกเลิกการจองโดยคืนที่นั่ง 3 ที่ ทำให้ที่นั่งที่มีเหลือมีเพิ่มเป็น 7 ที่ แต่ทางบริษัท b จะได้รับข้อมูลที่ยังไม่ได้ update ก็คือ 4 ที่ นั่นก็คือเกิดปัญหา lost update ในกรณีนี้ก็จะทำให้ บริษัท b จองที่ได้ไม่เพียงพอซึ่งไม่ตรงกับความเป็นจริง

1