У меня есть транзакция, которая удаляет записи из нескольких таблиц. Я хотел бы сохранить запись каждого удаления внутри другой таблицы с именем 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 как потенциальное решение.