การป้องกัน Non-Repeatable Reads
สมมติว่าคุณรับผิดชอบวิเคราะห์ข้อมูลลูกค้าของธนาคาร
คุณเตรียมสคริปต์ที่ดึงข้อมูลลูกค้าทุกรายในขั้นแรก จากนั้นสคริปต์จะประมวลผลการดำเนินการทางคณิตศาสตร์บางอย่างจากผลลัพธ์ที่ได้ (ในแบบฝึกหัดนี้จะไม่เน้นที่ส่วนนี้) และหลังจากนั้น ต้องการดึงข้อมูลชุดเดิมอีกครั้งเพื่อให้แน่ใจว่าไม่มีอะไรเปลี่ยนแปลง
เนื่องจากนี่คืองานที่สำคัญมาก จึงควรป้องกันไม่ให้ใครแก้ไขข้อมูลในตาราง customers จนกว่าการวิเคราะห์จะเสร็จสิ้น ซึ่งจะช่วยป้องกัน non-repeatable reads ได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- กำหนดระดับ isolation ที่เหมาะสมเพื่อป้องกัน non-repeatable reads
- เริ่มต้น transaction
- Commit transaction
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Set the appropriate isolation level
___ ___ ___ ___ ___ ___
-- Begin a transaction
___ ___
SELECT * FROM customers;
-- some mathematical operations, don't care about them...
SELECT * FROM customers;
-- Commit the transaction
___ ___