【发布时间】:2018-08-23 12:04:43
【问题描述】:
我有一个简单的日志记录脚本,它从触发器填充更改日志表,我试图通过排除特定模式 (chi) 的插入来限制插入的行
触发器:
DECLARE @data XML
SET @data = EVENTDATA()
INSERT INTO [dbo].[Object_ChangeLog](databasename, eventtype, objectname, objecttype, sqlcommand, loginname)
VALUES (@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
@data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'),
@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'),
@data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'),
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'),
@data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)'))
而且我需要使用 where 子句来过滤模式名称 (chi) 下的对象更改 - 到目前为止我已经尝试过:
WHERE
@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)') NOT LIKE 'chi%'
不幸的是,这会产生语法错误,有两个问题,首先我需要从事件数据中引入一个单独的列来识别架构吗?其次,我如何利用 where 子句从触发器中的插入中删除这些。
【问题讨论】:
标签: sql sql-server tsql sql-server-2008