我有2个表(1个临时表和2个主表)。
主表(Customer_Master)
我想将记录从暂存表一张一张地插入到主表中,并在暂存表中将这些记录更新为sync_status =1。这样,下次我就可以知道哪些记录不在我的主表中,我将只选择sync_status为0的那些记录。
我的老板建议我循环使用,而不要与光标一起使用。 而且我不知道如何在sql中使用循环。
答案 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