SQL Server EVENTDATA()函数来获取DDL 触发器信息
2022-11-12 09:48:28
内容摘要
这篇文章主要为大家详细介绍了SQL Server EVENTDATA()函数来获取DDL 触发器信息,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下
文章正文
这篇文章主要为大家详细介绍了SQL Server EVENTDATA()函数来获取DDL 触发器信息,具有一定的参考价值,可以用来参考一下。
对此感兴趣的朋友,看看idc笔记做的技术笔记!
代码如下:
-- Create a log table
CREATE TABLE TriggerLog (LogInfo xml)
-- Create a dummy table to delete later on
CREATE TABLE TableToDelete (Id int PRIMARY KEY)
-- 新建一个新表,作为删除实验表
INSERT INTO TableToDelete VALUES(1)
GO
-- 创建一个Drop Table 的 DDL
CREATE TRIGGER StopTableDrop ON DATABASE AFTER DROP_TABLE
AS
DECLARE @EventData AS xml
SET @EventData = EVENTDATA() -- 必须要在rollback之前截获DDL信息
ROLLBACK
PRINT 'DROP TABLE attempt in database ' + DB_NAME() + '.'
INSERT INTO TriggerLog VALUES(@EventData)
执行如下删除操作:DROP TABLE TableToDelete会触发上面的DDL,从而回滚操作。执行下面的Sql:SELECT * FROM TriggerLog查看刚才截获的DDL信息。
注:关于SQL Server EVENTDATA()函数来获取DDL 触发器信息的内容就先介绍到这里,更多相关文章的可以留意
代码注释