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