正如我所期望的,查询中的表提示优先。
这是我的测试脚本:
CREATE TABLE t1 (a int);
INSERT INTO t1(a) SELECT TOP 1000 message_id FROM sys.messages;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;
SELECT * FROM t1 WITH(NOLOCK); /* Try it with and without the hint */
EXEC sp_lock;
ROLLBACK;
Run Code Online (Sandbox Code Playgroud)
包含NOLOCK提示后,该语句不会获取任何锁SELECT。
换句话说,在事务上设置隔离级别会使该隔离级别成为事务中的默认值,但该默认值仍然可以被表提示覆盖,正如我所演示的那样。