僅在部分資料列上防止幻讀
你需要分析一些銀行客戶的資料,範圍是 customer_id 介於 1 到 10。你只想鎖定 customers 資料表中 customer_id 在 1 到 10 之間的那些資料列。這樣做可以保證沒有人能變更這些資料列,同時也允許其他交易處理資料表中的其餘資料。
你需要再次選取這些客戶並執行一些數學運算。(本練習不著重於這些運算本身。)之後,你想再度選取 customer_id 介於 1 到 10 的客戶,確保沒有任何變動。
你要如何準備這段腳本?
本練習屬於課程
SQL Server 的交易與錯誤處理
練習說明
- 設定合適的隔離層級以防止幻讀。
- 開始一個交易。
- 選取你想鎖定的那些客戶。
- 提交交易。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Set the appropriate isolation level
___ ___ ___ ___ ___
-- Begin a transaction
___ ___
-- Select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- After completing some mathematical operation, select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- Commit the transaction
___ ___