Как запустить триггер ДО удаления в T-SQL 2005? - PullRequest
18 голосов
/ 05 февраля 2009

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

Ответы [ 3 ]

28 голосов
/ 05 февраля 2009

Вы можете использовать опцию 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.

5 голосов
/ 05 февраля 2009

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

0 голосов
/ 05 февраля 2009

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

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

  • Отправка команды УДАЛИТЬ на SQL Server
  • Элемент удален из таблицы
  • OnDelete Trigger Fires Выполните
  • Логика Если логика не работает / проходит / что угодно, отмените удаление
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...