gpt4 book ai didi

sql - 插入时锁定表

转载 作者:行者123 更新时间:2023-12-02 12:16:07 25 4
gpt4 key购买 nike

我有一个从 View 填充的大表。这样做是因为 View 需要很长时间才能运行,并且更容易在表中提供可用的数据。每隔一段时间就会运行一个过程来更新表。

 TRUNCATE TABLE LargeTable

INSERT INTO LargeTable
SELECT *
FROM viewLargeView
WITH (HOLDLOCK)

我想在插入时锁定该表,这样如果有人尝试选择一条记录,他们在截断后将不会收到任何记录。我正在使用的锁似乎锁定了 View 而不是表。

有没有更好的方法来解决这个问题?

最佳答案

确实,正确的锁定提示会影响源 View 。

要确保在插入时没有人可以读取表中的内容:

insert into LargeTable with (tablockx)
...

在插入完成之前,您不必执行任何操作即可使表看起来为空。插入始终在事务中运行,并且其他进程无法读取未提交的行,除非显式指定 with (nolock)设置事务隔离级别读取未提交。据我所知,没有办法避免这种情况。

关于sql - 插入时锁定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842253/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com