第8讲 触发器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8讲 触发器
创建触发器
总结: AFTER:指定触发器只有在触发 SQL 语句中指定 的所有操作都已成功执行后才激发。所有的引用级 联操作和约束检查也必须成功完成后,才能执行此 触发器。如果指定 FOR 关键字,默认就是AFTER 设 置。 INSTEAD OF:指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的操作。在表或视图 上,每个 INSERT、UPDATE 或 DELETE 语句最多可 以定义一个 INSTEAD OF 触发器。
第8讲 触发器
创建触发器
例4
USE SouthSea GO CREATE TRIGGER DeleteInfo ON tblSalary AFTER DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 1 BEGIN print('不能同时删除多行记录!') ROLLBACK TRANSACTION END delete from tblSalary GO
第8讲 触发器
创建触发器
例3
USE SouthSea GO CREATE TRIGGER InsertUpdateInfo ON tblemployee AFTER INSERT, UPDATE AS SELECT employeeid, name FROM tblemployee SELECT employeeid, name FROM inserted GO insert tblemployee(employeeid, name) values(2010000032, '张海') GO
禁用或启用触发器 语法:ALTER TABLE 表名 { ENABLE | DISABLE } TRIGGER {ALL | 触发器名 [, …n] } ,
第8讲 触发器
查看、修改和删除触发器
删除触发器 语法:DROP TRIGGER 触发器名 – 若关联表被删除,则触发器自动删除 – 只有表的拥有者具有删除触发器的权限,且权限 不可转移。但是 sysadmin 和 db_owner 角色的 成员可以通过在 DROP TRIGGER 语句中指定拥有 者的方式来删除触发器
第8讲 触发器
触发器概述 创建触发器 查看、修改和删除触发器
第8讲 触发器
触发器概述
触发器的概念 触发器是一种特殊类型的存储过程,它不同于前面介 绍过的一般的存储过程。一般的存储过程通过存储过程名 称被直接调用,而触发器主要是通过事件进行触发而被执 行,它被定义为在对特定表或视图发出 UPDATE、INSERT 或 DELETE 语句时自动执行。 触发器是一个功能强大的工具,它与表紧密相连,在 表中数据发生变化时自动强制执行。触发器可以用于SQL Server约束、默认值和规则的完整性检查,还可以完成难 以用普通约束实现的复杂功能。
第8讲 触发器
Hale Waihona Puke 触发器概述触发器的优点 • 触发器是自动的执行的。 • 在数据库中的相关表上实现级联更改,在数据库 的相关表上使用触发器可实现级联更新或删除 • 强制比 CHECK 约束更复杂的数据完整性 • 可以实现用户自定义的信息提示
第8讲 触发器
创建触发器
使用Transact-SQL语句创建触发器 语法: CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] {{ FOR | AFTER | INSTEAD OF } { [DELETE][ , ][ INSERT ] [ , ] [ UPDATE ] } } AS sql_statement [ ...n ]
第8讲 触发器
创建触发器
使用企业管理器创建触发器 在企业管理器中,展开指定的服务器和数据库, 右击某个表,从弹出的快捷菜单中依次选择“所有 任务|管理触发器”选项,会出现触发器属性对话 框 。
第8讲 触发器
创建触发器
触发器使用说明: • 大部分触发器在所定义的表上执行 INSERT、UPDATE 或 DELETE 语句后执行,约束和 INSTEAD OF 触发器是在 动作前执行的。 如果触发器表上存在约束,则它们在触发器执行之前被 检查。如果违反了约束,则触发器不执行。 表的拥有者不能在视图或临时表上创建 AFTER 触发器 ,但触发器可以引用视图和临时表 表的拥有者可以在表和视图上创建 INSTEAD OF 触发器 触发器不返回结果集
作业
1. 完成教材P170页实训操作的1、2习题。
• • • •
第8讲 触发器
查看、修改和删除触发器
查看触发器 1.使用系统存储过程查看触发器 sp_depends 触发器名, sp_helptext 触发器名, sp_helptrigger 表名
2.使用企业管理器查看触发器信息
第8讲 触发器
查看、修改和删除触发器
修改触发器 语法:ALTER TRIGGER 触发器名 …… 使用新的定义代替触发器原有的定义,触发动作也 可以更改。
第8讲 触发器
创建触发器
触发器的工作过程总结 • 触发 INSERT 触发器时,新行被同时增加到触发 器表和 inserted 表中 • 触发 DELETE 触发器时,被删除的行放入 deleted 表中 • 当在定义了触发器的表上执行 UPDATE 语句的时 候,原行(前像)被移到 deleted 表中,而更 新的行(后像)则插入 inserted 表中
第8讲 触发器
创建触发器
例1
USE SouthSea GO CREATE TRIGGER reminder ON tblemployee AFTRER INSERT AS PRINT(‘插入操作完成’) GO
insert tblemployee(employeeid) values(‘2010000015’) go
第8讲 触发器
创建触发器
例2
CREATE TRIGGER TrigMsg1 ON tblemployee FOR DELETE, INSERT, UPDATE AS PRINT(‘不能编辑员工信息表’) ROLLBACK TRANSACTION GO CREATE TRIGGER TrigMsg2 ON tblemployee INSTEAD OF DELETE, INSERT, UPDATE AS PRINT(‘不能编辑员工信息表’) GO
相关文档
最新文档