การป้องกัน Dirty Reads
ให้วิเคราะห์ว่ามีบัญชีจำนวนเท่าใดที่มียอดเงินมากกว่า $50,000
เนื่องจากจำนวนบัญชีเป็นผลลัพธ์ที่สำคัญ จึงไม่ควรอ่านข้อมูลที่ถูกแก้ไขโดย transaction อื่นที่ยังไม่ได้ commit หรือ rollback ซึ่งเป็นการป้องกัน dirty reads อย่างไรก็ตาม ไม่จำเป็นต้องคำนึงถึง non-repeatable reads หรือ phantom reads
เตรียม script ให้พร้อม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- กำหนดระดับ isolation ที่เหมาะสมเพื่อป้องกัน dirty reads
- เลือกนับจำนวนบัญชีที่ตรงตามเงื่อนไขที่กำหนด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
-- Set the appropriate isolation level
SET TRANSACTION ___ ___ ___ ___
-- Count the accounts
SELECT ___(*) AS number_of_accounts
FROM accounts
WHERE current_balance >= 50000;