gpt4 book ai didi

sql - 交换 ms-sql 表

转载 作者:行者123 更新时间:2023-12-03 12:52:05 27 4
gpt4 key购买 nike

我想以最好的方式换到 table 。
我有一个 IpToCountry 表,我每周根据我导入的外部 CSV 文件创建一个新表。

我发现进行切换的最快方法是执行以下操作:

sp_rename IpToCountry IpToCountryOld
go
sp_rename IpToCountryNew IpToCountry
go

这样做的问题是表可能仍然在两者之间被访问。
如何在 SQL 中解决这个问题?
在考虑使用 sp_getapplock 和 sp_releaseapplock,但我想尽可能快地保持从表中读取的功能。

最佳答案

假设您无法更新/插入现有表,为什么不使用 view 包装对表的所有访问? ?

例如,您可能最初将数据存储在名为 IpToCountry20090303 的表中,您的 View 将如下所示:

CREATE VIEW IpToCountry
AS
SELECT * FROM IpToCountry20090303

当新数据进来时,您可以创建并填充 IpToCountry20090310 表。填充表格后,只需更新您的 View :
ALTER VIEW IpToCountry
AS
SELECT * FROM IpToCountry20090310

切换将是完全原子的,不需要任何显式锁定或事务。 View 更新后,您可以简单地删除旧表(如果您愿意,也可以保留它)。

关于sql - 交换 ms-sql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/605774/

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