Подтвердить что ты не робот

Как я могу запустить триггер перед удалением в T-SQL 2005?

Как я могу запустить триггер перед удалением в T-SQL 2005? FOR фактически срабатывает ПОСЛЕ события, и они, по-видимому, не имеют аргумента в функции TRIGGER. ВМЕСТО НЕ - это то, что я хочу. Мне нужно выполнить стрельбу, прежде чем я удалю запись. Любые идеи?

4b9b3361

Ответ 1

Вы можете использовать опцию INSTEAD OF, просто явно удалять строки в конце. Например:

CREATE TRIGGER dbo.My_Table_Delete_Instead_Of_Trigger
ON dbo.My_Table
INSTEAD OF DELETE
AS
BEGIN

     -- Do some stuff here

     DELETE T
     FROM DELETED D
     INNER JOIN dbo.My_Table T ON T.PK_1 = D.PK_1 AND T.PK_2 = D.PK_2
END

Предполагалось, что первичный ключ состоит из столбцов PK_1 и PK_2.

Ответ 2

Вы не можете. Но вы можете выполнить откат в триггере AFTER DELETE.

Ответ 3

Вы не можете. Что вы можете сделать, это проверить таблицу DELETE и отменить удаление, если вам нужно это сделать.

Здесь последовательность событий:

  • Отправить команду DELETE на SQL Server
  • Элемент удален из таблицы
  • OnDelete Trigger Fires Выполните
  • Логика Если логика выходит из строя/проходит/что угодно, отмените удаление