代码之家  ›  专栏  ›  技术社区  ›  phalondon

当表B上没有运行查询时,如何将数据从表a切换到表B

  •  0
  • phalondon  · 技术社区  · 6 年前

    我有两个表A,B,它们有相同的列。表B用于表格报告。表A是一个临时表,其中包含来自源系统的新数据。 当表B上没有运行查询时,如何将数据从表A切换到表B? 我需要这样做,以避免表B上的停机时间,并确保表B始终可供用户使用 非常感谢!

    2 回复  |  直到 6 年前
        1
  •  0
  •   Carsten Massmann    6 年前

    据我所知,这是直接方法无法实现的,因为任何RDBMS都会自行处理这个功能。只有你一个人 可以 把插入语句放在 transaction 块以确保在“未读”(=半成品)状态下永远不会看到(=查询)生成的表B。

        2
  •  0
  •   SqlKindaGuy    6 年前

    如果我对你的理解是正确的,这是一个场景;

    1将数据加载到 然后最终用户使用 表B

    2要将数据切换到 表B 没有停机时间

    这将解决您的问题:

    truncate table [dbo].[TableB]           alter table [dbo].[TableA]      switch to   [dbo].[TableB]  
    

    此脚本在毫秒内执行,应足以满足您的要求。但有一个注意事项是 表B 必须完全一样。相同的索引,相同的列等。