我似乎无法找到一个应该是一个简单问题的直接答案。如果我在T-SQL中创建一个事务并将ISOLATION LEVEL设置为SERIALIZABLE,这是否会对我正在修改的表创建一个READ锁定?
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
GO
BEGIN TRANSACTION;
GO
TRUNCATE TABLE TBL_PRODUCTS;
GO
**INSERT RECORDS HERE**
GO
COMMIT TRANSACTION;
GO
答案 0 :(得分:1)
TRUNCATE TABLE
将在表上获取 exclusive shema modify 锁,防止所有用户从表中读取(除非他们使用{{1 }}或并写入表格(没有写作的例外)。独家锁定将在TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
)WITH(NOLOCK)
发布。
编辑:正如Martin Smith在下面的评论中指出的那样,truncate table将获得一个架构修改锁。这意味着在提交或回滚之前,没有其他用户能够读取或修改表。
答案 1 :(得分:0)
是的,它会锁定表,这些是可序列化的规则: