Я создал таблицу аудита, которая заполняется журналом аудита (срабатывает после каждого обновления, удаления и вставки) для разных таблиц в моей базе данных. Теперь меня попросили создать хранимую процедуру (скрипт) для отката изменения данных с использованием идентификатора аудита. Как мне это сделать? Я написал сценарий, который кажется хорошим. Команда принята SQL Server (команда выполнена успешно). К сожалению, когда я проверяю его, передавая Audit_id, команда завершается, но данные не откатываются. Это процедура, которую я разработал. Любая помощь будет оценена.
create PROCEDURE [dbo].[spAudit_Rollback_2]
@AUDIT_ID NVARCHAR(MAX)
AS
SET Nocount on
BEGIN
DECLARE
@TABLE_NAME VARCHAR(100),
@COLUMN VARCHAR(100),
@OLD_VALUE VARCHAR(200),
@ID varchar(50)
SELECT @TABLE_NAME = TABLE_NAME FROM AUDIT;
SELECT @COLUMN = [COLUMN] FROM AUDIT;
SELECT @AUDIT_ID = AUDIT_ID FROM AUDIT;
SELECT @OLD_VALUE = OLD_VALUE FROM AUDIT
SELECT @ID = ROW_DESCRIPTION FROM AUDIT;
update [Production].[UnitMeasure]
set @COLUMN = @OLD_VALUE
WHERE [Production].[UnitMeasure].[UnitMeasureCode] = @ID
END
[dbo].[spAudit_Rollback_2]'130F0598-EB89-44E5-A64A-ABDFF56809B5
Это тот же сценарий, но с использованием базы данных и данных adventureworks2017.
Если возможно, я бы даже предпочел использовать переменную, чтобы извлечь это имя таблицы из Audit и использовать его в процедуре. Это также дает мне еще одну ошибку.
Любая помощь с этой процедурой будет потрясающей.