我有一个与以下查询类似的合并查询:
{{ post.message }}
{% if user.is_staff %}
<div class="mt-3">
<a href="{% url 'edit_post' post.topic.board.pk post.topic.pk post.pk %}"
class="btn btn-primary btn-sm"
role="button">Edit</a>
</div>
{% endif %}
如果我要添加TABLOCK,哪里是最好的地方?我以为我会像下面这样说-包装整个merge语句:
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)
或者更适合插入语句吗?
答案 0 :(得分:0)
您应该问自己的第一个问题是,为什么根本需要此表提示? 合并是在隐式事务中运行的DML语句。 这样,您将阻止整个表,但是如果您愿意,则应在需要锁定的表上放置提示。 只需看一下文档:https://docs.microsoft.com/en-us/sql/t-sql/statements/merge-transact-sql?view=sql-server-2017
MERGE [Unshipped] u WITH (TABLOCK)
USING [Order] order as or WITH (TABLOCK) ON or.ID = u.ID
这实际上取决于您要锁定未发货或订购的表。