【发布时间】:2019-03-23 10:13:11
【问题描述】:
我有一个类似于下面的合并查询:
MERGE [Unshipped] u
USING [Order] or ON or.ID = u.ID
WHEN MATCHED AND u.Date <> or.Date
THEN
UPDATE
SET u.Date = or.Date
WHEN NOT MATCHED
THEN
INSERT (ID, FK, Date)
VALUES (or.ID, or.FK, or.Date)
如果我要添加 TABLOCK,它的最佳位置在哪里?我会假设我会像下面这样 - 包装整个合并语句:
MERGE [Unshipped] u WITH (TABLOCK)
USING [Order] order or ON or.ID = u.ID
或者它更适合与插入语句一起使用?
【问题讨论】:
-
您想通过使用 tabblock 解决什么问题?你也应该阅读这篇关于合并问题的文章:mssqltips.com/sqlservertip/3074/… 尽管它很方便,但还是有一些陷阱。我使用了 WITH (SERIALIZABLE) 或者只是用 INSERT/UPDATE 组合替换它
-
@user1443098 死锁
-
MS 出现了一个问题,该问题被关闭为“按设计”
标签: sql sql-server merge deadlock