SQL Сервер INSERT результаты из OUTPUT в существующую таблицу - PullRequest
0 голосов
/ 18 июня 2020

У меня есть транзакция, которая удаляет записи из нескольких таблиц. Я хотел бы сохранить запись каждого удаления внутри другой таблицы с именем DeleteLog .

Моя транзакция:

-- SET THESE VARS TO CLIENT INFO
DECLARE @OrganizationID INT = 25
DECLARE @AreaID INT = 1181
DECLARE @ExpID INT = 43926

BEGIN TRANSACTION [Tran1]
  BEGIN TRY

    -- EXP HISTORY.
    DELETE [ExpHistory] OUTPUT DELETED.*
    FROM [ExpHistory] 
    INNER JOIN [Area] ON [ExpHistory].AreaID = [Area].ID
    INNER JOIN [Organization] ON [Area].OrganizationID = [Organization].ID
    INNER JOIN [Exp] ON [ExpHistory].ExpID = [Exp].ID
    WHERE [ExpHistory].AreaID = @AreaID AND [Organization].ID = @OrganizationID AND [Exp].ID = 
    @ExpID

    -- INSERT OUTPUT INTO EXISTING TABLE CALLED DeleteLog

    -- EXP.
    DELETE [Exp] OUTPUT DELETED.*
    FROM [Exp] 
    INNER JOIN [Area] ON [Exp].AreaID = [Area].ID
    INNER JOIN [Organization] ON [Area].OrganizationID = [Organization].ID
    WHERE [Exp].AreaID = @AreaID AND [Organization].ID = @OrganizationID AND [Exp].ID = @ExpID

    -- INSERT OUTPUT INTO EXISTING TABLE CALLED DeleteLog

  COMMIT TRANSACTION [Tran1]

END TRY

BEGIN CATCH

  ROLLBACK TRANSACTION [Tran1]

END CATCH  

Предложение output возвращает удаленные элементы как ожидалось, но теперь я хотел бы вставить их в свою таблицу DeleteLog . Мне нужно будет установить определенные столбцы c, поэтому я не верю, что использование INTO сработает. Я видел MERGE как потенциальное решение.

...