第10章 触发器的创建和使用 10.1 触发器概述 10.2 创建触发器 10.3 修改触发器 10.4 删除触发器
能力目标 触发器的创建和维护方法; 各种触发器的特性; 使用触发器编程。
态度目标 团队精神; 态度积极; 任务按时完成; 出勤。
重点难点 重点: 触发器的创建和维护方法; 使用触发器编程。 难点:
10.1 触发器概述 1. 触发器概念 触发器是一种特殊的存储过程,在用户试图对 指定的表执行指定的数据修改语句(INSERT、 10.1 触发器概述 1. 触发器概念 触发器是一种特殊的存储过程,在用户试图对 指定的表执行指定的数据修改语句(INSERT、 UPDATE或DELETE)时自动执行。可实现多个数 据表中共享属性字段值的一致性检查和修改,并可 以自动执行诸如查询或修改的等操作。
10.1 触发器概述 2. 触发器的种类 AFTER触发器:在执行完INSERT、DELETE 或UPDATE操作后,数据发生变动后触发。 10.1 触发器概述 2. 触发器的种类 AFTER触发器:在执行完INSERT、DELETE 或UPDATE操作后,数据发生变动后触发。 INSTEAD OF 触发器:数据变动前触发,并取 代变动数据的操作(如INSERT、DELETE和 UPDATE),转而去执行触发器定义的操作。
10.2 创建触发器 方法1:使用“SQL Server Management Studio” 创建触发器
10.2 创建触发器 方法2:使用“Transact-SQL” 创建触发器 10.2 创建触发器 方法2:使用“Transact-SQL” 创建触发器 CREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH ENCRYPTION ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] }
10.3 修改触发器 方法1:使用“SQL Server Management Studio” 修改触发器
10.3 修改触发器 方法2:使用“Transact-SQL” 修改触发器 10.3 修改触发器 方法2:使用“Transact-SQL” 修改触发器 ALTER TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH ENCRYPTION ] { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] } CREATE TRIGGER DDLtrigger ON DATABASE FOR DROP_TABLE AS PRINT 'DDL触发器被触发!' ROLLBACK
10.4 删除触发器 方法1:使用“SQL Server Management Studio” 删除触发器
10.4 删除触发器 方法2:使用“Transact-SQL” 删除触发器 1. 删除DML触发器 2. 删除DDL触发器 10.4 删除触发器 方法2:使用“Transact-SQL” 删除触发器 1. 删除DML触发器 2. 删除DDL触发器 DROP TRIGGER schema_name.trigger_name [ ,...n ] [ ; ] DROP TRIGGER trigger_name [ ,...n ] ON { DATABASE | ALL SERVER } [ ; ]
10.4 删除触发器 方法2:使用“Transact-SQL” 删除触发器 【案例10.1】 10.4 删除触发器 方法2:使用“Transact-SQL” 删除触发器 【案例10.1】 使用Transact-SQL语句,删除eTradeInfo上的 DDLtrigger触发器。 【案例10.2】 使用Transact-SQL语句,删除Employees上的 DelEmpInfo触发器 DROP TRIGGER DelEmpInfo DROP TRIGGER DDLtrigger ON eTradeInfo
使用案例数据eTradeInfo,在“SQL Server Management Studio”管理窗口中,完成以下题目触发 案例分析 使用案例数据eTradeInfo,在“SQL Server Management Studio”管理窗口中,完成以下题目触发 器创建和Transact-SQL代码调试。 1. 在Employees上编写一个触发器,当修改某雇 员信息时,将该雇员销售记录的相关商品信息 Sales 一同修改。 2. 在库存表 StockPile上创建 INSTEAD OF 触发 器,当有人企图修改、删除库存时返回警告信息。 3. 在销售合同明细表(Sale_detail)上创建一个 触发器,将合同中的数量及时在库存表 StockPile 中 更新。
用“SQL Server Management Studio” 和 T-SQL 语句在表上创建各种类型的触发器,并在“SQL编 案例分析 要求: 用“SQL Server Management Studio” 和 T-SQL 语句在表上创建各种类型的触发器,并在“SQL编 辑器 ” 窗口中调试; 问题: 1. 用户可以调用触发器吗? 2. INSTEAD OF 触发器与AFTER触发器有何 区别? 讨论: 触发器与存储过程和自定义函数有何异同。
触发器是一种特殊的存储过程,常常用于强制 操作业务规则和数据完整性约束。 DDL触发器在数据库表上创建,当该表发生触 本章小结 触发器是一种特殊的存储过程,常常用于强制 操作业务规则和数据完整性约束。 DDL触发器在数据库表上创建,当该表发生触 发器所定义的事件如修改数据(UPDATE)、插入 (INSERT)数据或删除(DELETE)数据前后,触 发器会自动执行所定义的操作 DML触发器是对数据库对象创建(CREATE)、 删除(DROP)和修改(ALTER)等操作时所定义 的一种触发器,其主要功能是防止或响应对数据库 架构进行修改,记录数据库架构中的更改和事件等, 是SQL Server 2005新功能。