为了防止并发错误,我决定用这个包装我所有的 sql 调用(都在存储过程中)sql 语句(所有 crud 操作,例如更新/插入/ upserts 甚至只是表读取)
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran--sqlstatements here
选项(MAXDOP 1)
提交翻译
让我们说我不关心性能。我只想防止违反约束,以及由 2 个或更多同时访问同一数据库的线程引起的死锁。
这是否有效地消除了所有死锁以及竞争条件引起的约束问题?
如果我已经将调用包装在可序列化事务中,是否还需要显式使用 with(保持锁、更新锁)来实现 CUD 功能?