9讲 第9 触发器
第9讲 触发器
NillOrder Random Num 02000060 018 报名 CULL> 02000060 报名 QULL 001 报名 AULL> 引 Could coulame Kind Credit Teacher Depart SchoolTime Limi t un WilNum/Chooselun 015r实用信息技木3候人风0周二56节20430 例[对怎0是特1*0 08信息检索信息技术20月一1030 思考:当学生报名选修 SQLServer实用 技术课程时,Wi11Num应自动加1.如何 处理?
引 例 思考:当学生报名选修SQLServer实用 技术课程时,WillNum应自动加1,如何 处理?
●在指定的表中数据发生变化时 被调用以响应 INSERT、 UPDATE 或 DELETE事件 触发器的作用 强制执行业务规则
触 发 器 的 作 用 在指定的表中数据发生变化时 被调用以响应INSERT、UPDATE 或DELETE事件 强制执行业务规则
e【问题】创建一个触发器TeSt1,要 创 求每当在 Student表中修改数据时 向客户端显示一条“记录已修改!” 的消息 建简单的触发器 SQL格式: CREATE TRIGGER trigger name On table WITH ENCRYPTIONI FORJAFTERJ INSTEAD OF IINSERTI IUPDATEIDELETED AS sql statement 在企业管理器中查看触发器信息
创 建 简 单 的 触 发 器 【问题】创建一个触发器Test1,要 求每当在Student表中修改数据时, 向客户端显示一条“记录已修改!” 的消息 SQL格式: CREATE TRIGGER trigger_name On table [WITH ENCRYPTION] {FOR|AFTER| INSTEAD OF} {[INSERT] [UPDATE] [DELETE]} AS sql_statement 在企业管理器中查看触发器信息
。【问题】将上例中触发器中的FOR UPDATEI改为 INSTEAD OF UPDATE, 查看执行结果有何不同。 9的比较 列·总结: 8使用FOR/ AFTER时,执行触发SL语句 ( INSERT/ UPDATE/ DELETE):在触发 SL语句成功执行后,再执行触发器 3使用 INSTEAD OF时:执行触发器而不 执行触发SQL语句
FOR/AFTER/INSTEAD OF 的 比 较 【问题】将上例中触发器中的FOR UPDATE改为INSTEAD OF UPDATE, 查看执行结果有何不同。 总结: 使用FOR/AFTER时,执行触发SQL语句 (INSERT/UPDATE/DELETE):在触发 SQL语句成功执行后,再执行触发器 使用INSTEAD OF时:执行触发器而不 执行触发SQL语句
1.创建一个触发器,要求每当在 Stucou表中插入数据时,向客丿 端显示一条“记录已添加!”的 消息。 练 习 创建一个触发器,要求每当用 插入 student表的记录时,自动显 示表中所有内容
练 习 1 1. 创建一个触发器,要求每当在 StuCou表中插入数据时,向客户 端显示一条“记录已添加!”的 消息。 2. 创建一个触发器,要求每当用户 插入student表的记录时,自动显 示表中所有内容
系统为每个触发器都自动创建 了 INSERTED表和 DELETED表 INSERTED表用于存放插入操作 时的行: DELETED表用于存放删 巴表和巴巴表 除操作时的行 ●这两个表的结构和被触发器作 用的表的结构相后 用户不能对这两个表进行修改, 但可以读取
INSERTED 表 和DELETED 表 系统为每个触发器都自动创建 了INSERTED表和DELETED表 INSERTED表用于存放插入操作 时的行;DELETED表用于存放删 除操作时的行 这两个表的结构和被触发器作 用的表的结构相同 用户不能对这两个表进行修改, 但可以读取
1.创建一个触发器,要求每当 用户插入 studen表的记录后 自动显示 Studen表中插入的 记录 练 习
练 习 2 1. 创建一个触发器,要求每当 用户插入student表的记录后, 自动显示Student表中插入的 记录
〖问题】创建一个触发器 Seti1lNm,要求当插入、更 新、删除 Stucou表的选课记录 时,能更新 Course表中相应的 建触发器 报名人数。 9说明:该触发器只适用于每 次新增、删除一条记录的情 况
创 建 触 发 器 【问题】创建一个触发器 SetWillNum,要求当插入、更 新、删除StuCou表的选课记录 时,能更新Course表中相应的 报名人数。 说明:该触发器只适用于每 次新增、删除一条记录的情 况
创·考:若有批量的教据新增 建「插△成拥除,应该如何修改 上例中的触发器? 批量数据触发器 处理多条记录的触发器简单 易维护,但每次都更新 course 中每条记录的报名人数。效率 不高
创 建 批 量 数 据 触 发 器 思考:若有批量的数据新增、 插入或删除,应该如何修改 上例中的触发器? 处理多条记录的触发器简单、 易维护,但每次都更新Course 中每条记录的报名人数,效率 不高