如何将记录从登台表插入到主表以及如何将记录更新为同步状态为true

时间:2018-12-26 06:02:28

标签: mysql sql sql-server

我有2个表(1个临时表和2个主表)。

登台表(temp_Customer)。

Staging Table


主表(Customer_Master)

Master Table

我想将记录从暂存表一张一张地插入到主表中,并在暂存表中将这些记录更新为sync_status =1。这样,下次我就可以知道哪些记录不在我的主表中,我将只选择sync_status为0的那些记录。

我的老板建议我循环使用,而不要与光标一起使用。 而且我不知道如何在sql中使用循环。

1 个答案:

答案 0 :(得分:3)

我建议使用一种事务,该事务将首先尝试将暂存中的所有记录插入主记录,然后将暂存记录标记为已转移。

BEGIN TRANSACTION [yourTransaction]

    BEGIN TRY

        INSERT INTO Master ([STK_Code], [Cust_Code], [Cust_Add], ...) -- other columns
        SELECT [STK_Code], [Cust_Code], [Cust_Add], ...
        FROM Staging
        WHERE sync_status = 0

        UPDATE Staging
        SET sync_status = 1
        WHERE sync_status = 0

        COMMIT TRANSACTION [yourTransaction]

  END TRY

  BEGIN CATCH

      ROLLBACK TRANSACTION [Tran1]

  END CATCH