简介

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

Florin Angelescu

Instructor

什么是触发器?

  • 特殊类型的存储过程
  • 在数据库服务器发生事件时执行

触发器如何工作

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

触发器类型(按 T-SQL 命令)

  • 数据操作语言(DML)触发器
    • INSERTUPDATEDELETE 语句
  • 数据定义语言(DDL)触发器
    • CREATEALTERDROP 语句
  • 登录触发器
    • LOGON 事件
在 SQL Server 中构建与优化触发器

触发器类型(按行为)

  • AFTER 触发器

    • 原始语句先执行
    • 之后触发额外语句
  • 用例示例

    • 大量插入后重建索引
    • 数据更新时通知管理员
在 SQL Server 中构建与优化触发器

触发器类型(按行为)

  • INSTEAD OF 触发器

    • 阻止原始语句执行
    • 改为执行替代语句
  • 用例示例

    • 阻止插入
    • 阻止更新
    • 阻止删除
    • 阻止对象修改
    • 通知管理员
在 SQL Server 中构建与优化触发器

触发器定义(AFTER)

-- 通过描述性名称创建触发器
CREATE TRIGGER ProductsTrigger

-- 将触发器绑定到表 ON Products
-- 触发器行为类型 AFTER INSERT
-- 触发器流程开始 AS
-- 触发器执行的操作 PRINT ('在 Products 表中发生了插入。');
在 SQL Server 中构建与优化触发器

触发器定义(INSTEAD OF)

-- 通过描述性名称创建触发器
CREATE TRIGGER PreventDeleteFromOrders
-- 将触发器绑定到表
ON Orders
-- 触发器行为类型
INSTEAD OF DELETE
-- 触发器流程开始
AS
-- 触发器执行的操作
PRINT ('不允许从 Orders 表删除行。');
在 SQL Server 中构建与优化触发器

AFTER 与 INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- 在触发事件(UPDATE)之后触发
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- 代替触发事件(UPDATE)执行
INSTEAD OF UPDATE
AS
{trigger_actions_section};
在 SQL Server 中构建与优化触发器

开始练习!

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

Preparing Video For Download...