Как определить, какое действие вызвало триггер, который обрабатывает несколько событий
У меня есть триггер базы данных, который регистрирует изменения DDL. Имеет следующий формат
CREATE TRIGGER [Log_DDL_Changes]
ON DATABASE
FOR
CREATE_TABLE, ALTER_TABLE, DROP_TABLE,
CREATE_INDEX, ALTER_INDEX, DROP_INDEX,
CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
CREATE_VIEW, ALTER_VIEW, DROP_VIEW,
CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION, RENAME
--Fires only for CREATE / ALTER / DROP Table and PROCs
AS
BEGIN
.
.
.
END
Я хотел бы добавить специальную обработку всякий раз, когда таблица, представление или индекс создаются или изменяются.
Как я могу определить, какое событие сработало для триггера, который обрабатывает несколько событий?
1 ответ
Решение
Вы используете что-то вроде этого в вашем триггере:
SELECT EVENTDATA().value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(max)')