序列中 INSERT SELECT UPDATE 迭代的替代方案

Alternative to Iteration for INSERT SELECT UPDATE in a sequence

我有一个 table,其中包含大约 17k 行,我需要按顺序 运行 这些语句集

我试过:

问题不够详细。我想使用这样的一般想法

-- create a output table to hold new id, and key columns to join later
DECLARE @OutputTbl TABLE (ID INT, key_Columns in MASTERTABLE)

INSERT INTO TABLE1
OUTPUT INSERTED.ID, MASTERTABLE.key_columns INTO @OutputTbl 
SELECT *
FROM MASTERTABLE 

UPDATE T2
SET ID = o.ID
FROM TABLE2 t2
INNER JOIN OutputTbl o
  ON t2.key_column = o.key_column 

也许您可以考虑在 TABLE1 上使用 TRIGGER 来调用 TABLE2 上的存储过程,然后您可以在 INSERT 上调用 INSERT 17=].. 一个接一个或成块..

DROP TRIGGER TR_UPD_TABLE2 
GO

CREATE TRIGGER TR_UPD_TABLE2 ON TABLE1 AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON

    DECLARE @columnID INT = NULL 

    IF (SELECT COUNT(*) FROM INSERTED)=1 BEGIN
        -- SINGLE INSERT
        SET @columnID = (SELECT columnID FROM INSERTED)

        EXEC TableTwoUpdateProcedure @columnID

    END ELSE BEGIN
        -- MASSIVE INSERT (IF NEEDED)
        SET @columnID = 0

        WHILE @columnID IS NOT NULL  BEGIN
            SET @columnID = (SELECT MIN(columnID) FROM INSERTED WHERE columnID > @columnID)

            IF @columnID IS NOT NULL BEGIN
                EXEC TableTwoUpdateProcedure @columnID
            END
        END

    END 
END