DDL 触发器

在 SQL Server 中构建与优化触发器

Florin Angelescu

Instructor

定义与属性

DML 触发器

  • 与 DML 语句关联的事件 INSERT, UPDATE, DELETE
  • AFTERINSTEAD OF 一起使用
  • 附加到表或视图
  • inserteddeleted 特殊表

DDL 触发器

  • 与 DDL 语句关联的事件 CREATE, ALTER, DROP
  • 仅与 AFTER 一起使用
  • 附加到数据库或服务器
  • 无特殊表
在 SQL Server 中构建与优化触发器

AFTER 与 FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
在 SQL Server 中构建与优化触发器

AFTER 与 FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

在 SQL Server 中构建与优化触发器

DDL 触发器前提条件

  • 目标对象(服务器或数据库)
  • 触发器说明
  • 触发事件(DDL)
  • 触发器名称
  • DATABASE
  • 记录定义更改的日志表
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
在 SQL Server 中构建与优化触发器

DDL 触发器定义

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
在 SQL Server 中构建与优化触发器

阻止触发 DML 触发器的事件

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
在 SQL Server 中构建与优化触发器

Passons à la pratique !

在 SQL Server 中构建与优化触发器

Preparing Video For Download...