我正在尝试为特定表创建 DDL 触发器,这是我能想到的最好方法:

CREATE TRIGGER MyTrigger
ON DATABASE
FOR DDL_TABLE_EVENTS
AS
DECLARE @EventData      xml
SET @EventData=EVENTDATA()

IF @EventData.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(50)')='TABLE'
    AND @EventData.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(50)') ='MyTable'
BEGIN
    --do something special here!!
END
GO

这真的是唯一的方法吗? 我到处找,但找不到在特定表上创建触发器的语法。我认为需要使用 xml EVENTDATA() 真的很愚蠢。

最佳答案

是的。这是做到这一点的方法。 DDL 触发器与数据库相关联,而不是与单个对象相关联。因此,您不能直接订阅仅在特定对象上发生的 DDL 事件。

关于sql-server - 如何为特定表制作 DDL 触发器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1247147/

10-09 17:54