首页 > 解决方案 > 如何在使用表的同时更新表?

问题描述

我有一个名为PCNAME\SQLEXPRESS. 我需要从主数据库加载数据MAINDB\HYEAH,因此我链接了 mainDB,并且我能够使用存储过程将数据从主数据库插入本地数据库。

我遇到的问题是我无法弄清楚执行以下操作的正确方法:

我一直在使用从 mainDB 导入的数据,这些数据在表中Credits,我一直在咨询、插入或更新该表中的记录。

但是每 10 分钟我必须重新从 mainDB 重新加载数据Credits,但我不能停止使用数据。我需要找到一种方法来使用这些数据并对其进行操作,同时从 mainDB 重新加载。

我不是 DB 或 SQL 事务方面的专家,所以我想到了这个解决方案:

第一次从 mainDB 加载数据时,我将直接在 table 上进行Credits。其他时候我会将数据加载到临时表中,当存储过程完成时,我将替换Credits为临时表中的数据。但我认为这是愚蠢的原因,如果我删除所有数据Credits以用临时表替换它,我将无法继续使用这些数据,所以我被卡住了。

有没有办法正确实现这一目标?

谢谢!

标签: sql-servertsql

解决方案


一种选择是使用同义词。

BEGIN TRY
    DROP SYNONYM working_table
END TRY
BEGIN CATCH
END CATCH

CREATE SYNONYM working_table FOR import_table_a

您现在可以对working_table 进行选择和更新,它们将进入import_table_a。当您需要重新加载数据(到 import_table_b)时,您只需删除同义词并将其指向新版本的表。

但是请注意其他暗示您可能正在解决错误问题的评论:)


推荐阅读