Snapshot isolation uses an optimistic concurrency model. If a snapshot transaction attempts to commit modifications to data that has changed since the transaction began, the transaction will roll back and an error will be raised. You can avoid this by using UPDLOCK hints for SELECT statements that access data to be modified.
裡面提到快照隔離沒有辦法避免 Write Skew & Phantom Read,並提到:
但是其實在 2019 SQL Server 中,快照隔離已經預設有 optimistic concurrency & select statement lock 的支援 XD (也就是文中的 SSI)
ref: https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/sql/snapshot-isolation-in-sql-server
不知道還有沒有 DB 是在這本書(2017)寫完後有比較大的 Isolation 改變!?