1

我正在编写一个存储过程来定期将数据从多个源表复制到目标表。我想将源表的一列中的数据插入到目标表中,然后根据该列更新目标表。

我写了一个存储过程:

  1. 将源表中的日期时间数据插入到目标表中,检查是否不插入目标中已存在的任何日期时间值。
  2. 根据源列更新目标列的其余部分,及时回溯到足以捕获对先前数据的任何更改。
BEGIN TRANSACTION; 

    BEGIN TRY

        INSERT INTO DestTbl (DtTm)
        SELECT
            TblA.DtTm
        FROM
            TblA
        WHERE   
                TblA.DtTm > DATEADD(DAY, -1, GETDATE())
            AND TblA.DtTm NOT IN
                (
                    SELECT
                        DestTbl.DtTm
                    FROM 
                        DestTbl
                )
        ORDER BY
            TblA.DtTm ASC;

        COMMIT TRANSACTION;

    END TRY
-- There is a transaction like this for each source table
BEGIN TRANSACTION;

    BEGIN TRY

        UPDATE
            DestTbl
        SET
            DestTbl.Col2 = TblB.SomeCol
        FROM
            DestTbl
        INNER JOIN
            TblB
            ON      
                    TblB.DtTm > DATEADD(DAY, -1, GETDATE()) 
                AND DestTbl.DtTm = TblB.DtTm;

        COMMIT TRANSACTION;

    END TRY        

确保我的 INSERT 在 UPDATE 语句之前执行的最佳方法是什么?或者我应该将我的查询重构为:https ://stackoverflow.com/a/11010548 ?

谢谢你。

4

0 回答 0