如何在同时使用表格的同时更新表格?

时间:2019-04-25 13:49:39

标签: sql-server tsql

我有一个名为PCNAME\SQLEXPRESS的本地数据库(我正在使用SQL Server Express)。我需要从位于MAINDB\HYEAH的主数据库中加载数据,因此我链接了mainDB,并且能够使用存储过程将主DB中的数据插入到本地DB中。

我的问题是我不知道执行以下操作的正确方法:

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

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

我不是数据库或SQL事务方面的专家,所以我考虑了以下解决方案:

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

有没有办法正确地做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:1)

一种选择是使用同义词。

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中时,只需删除同义词并将其指向表的新版本即可。

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