Я пытаюсь вызвать событие триггера ON Delete
, но когда я пытаюсь выбрать строку из таблицы Deleted
, она пуста.Удаленная виртуальная таблица в SQL Server пуста ON Delete trigger
Есть ли другой способ получить идентификатор строки, на которой ушло событие удаления?
Код:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER TRIGGER [audit]
ON [dbo].[S_PARTY]
FOR DELETE
AS
-- Insert statements for trigger here
DECLARE @id nvarchar(50)
SET @id = (Select ROW_ID from deleted)
BEGIN
-- Insert statements for trigger here
INSERT INTO [dbo].[S_AMF_AUDIT_ITEM] (ROW_ID)
VALUES (@id);
END
Когда триггер срабатывает на это, я получаю сообщение об ошибке, как S_AMF_AUDIT_ITEM
не допускает пустых значений. Можете ли вы, пожалуйста, помочь мне получить идентификатор таблицы, на которой выполняется команда удаления?
работал !! .. но я до сих пор не понимаю, почему SET @id = (выберите ROW_ID из удаленной) не устанавливает значение. Я уверен, что я удаляю только одну строку за раз. и Id существует в таблице S_PARTY, откуда я пытаюсь удалить. – rishman