ป้องกัน Phantom Reads ในตาราง
วันนี้ต้องวิเคราะห์ข้อมูลของลูกค้าทุกคนในธนาคาร เนื่องจากข้อมูลนี้มีความสำคัญมาก จึงต้องการล็อกตาราง customers ทั้งหมด เพื่อไม่ให้ใครสามารถแก้ไขข้อมูลในตารางนี้ได้ ซึ่งเป็นการป้องกัน Phantom Reads
เตรียม Script สำหรับดึงข้อมูลดังกล่าว และนำผลลัพธ์ที่ได้ไปใช้คำนวณทางคณิตศาสตร์ต่อ (ในแบบฝึกหัดนี้จะยังไม่โฟกัสที่การคำนวณส่วนนั้น) จากนั้นต้องการดึงข้อมูลชุดเดิมอีกครั้ง เพื่อให้มั่นใจว่าไม่มีอะไรเปลี่ยนแปลง
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- กำหนดระดับ Isolation ที่เหมาะสมเพื่อป้องกัน Phantom Reads
- เริ่ม Transaction
- Commit Transaction
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Set the appropriate isolation level
___ ___ ___ ___ ___
-- Begin a transaction
___ ___
SELECT * FROM customers;
-- After some mathematical operations, we selected information from the customers table.
SELECT * FROM customers;
-- Commit the transaction
___ ___