У меня есть триггер DDL для мониторинга изменений, внесенных в конкретные таблицы в базе данных SQL Server.Но это не работает.Удивительно, что когда я удаляю табличный фильтр (то есть оператор IF), он работает.Даже если я попытался поставить условие типа 1 = 1, оно также не работает.Таким образом, мое наблюдение состоит в том, что условие IF здесь не работает по некоторым причинам.Пожалуйста, помогите, что здесь не так.Ниже приведен триггер DDL.
CREATE TRIGGER [SQLObjectMonitoring]
ON DATABASE
FOR create_table, alter_table, drop_table
AS
BEGIN
SET NOCOUNT ON
DECLARE @data XML = EVENTDATA()
DECLARE @DatabaseName [varchar](256) = @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)')
DECLARE @EventType [varchar](50) = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)') -- value is case-sensitive
DECLARE @ObjectName [varchar](256) = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)')
DECLARE @ObjectType [varchar](25) = @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)')
DECLARE @SQLCommOR [varchar](max) = @data.value('(/EVENT_INSTANCE/TSQLCommOR)[1]', 'varchar(max)')
DECLARE @LoginName [varchar](256) = @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)')
IF(@ObjectName = 'TABLE1' OR @ObjectName = 'TABLE2' OR @ObjectName = 'TABLE3' OR @ObjectName = 'TABLE4' OR @ObjectName = 'TABLE5')
BEGIN
INSERT INTO dbo.SQLObjectLog(databasename, eventtype,objectname, objecttype, sqlcommOR, loginname, eventdate)
VALUES(@DatabaseName, @EventType, @ObjectName, @ObjectType, @SQLCommOR, @LoginName, GETDATE())
END
END