9.4触发器 课件(共22张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源下载
  1. 二一教育资源

9.4触发器 课件(共22张PPT)-《数据库应用技术-SQL Server》同步教学(人民邮电版)

资源简介

(共22张PPT)
SQL Server 2019高级应用
第9章
目录
01
T-SQL编程基础
02
游标
03
存储过程
04
触发器
本章主要内容
本章主要阐述T-SQL的标识符、运算符、表达式、函数、变量与常量、流程控制语句等基础知识,并结合实例探讨T-SQL最常见的应用,分析游标的基本原理和使用方法,重点介绍使用T-SQL创建、管理存储过程和触发器。
触发器
第9章
04
9.4.1 触发器的概念和工作原理
1. 触发器的概念
触发器是一组T-SQL语句,是在对表进行插入、更新或删除操作时自动执行的存储过程。与存储过程相比,二者的不同点主要体现在:触发器不能使用EXECUTE语句,由用户使用T-SQL语句时自动触发,是自动执行的且不含参数。
触发器的特点是:它是一种在基本表被修改时自动执行的内嵌过程,主要通过事件或动作进行触发而被执行;它不像存储过程能通过名称被直接调用,更不允许带参数;它主要用于约束、默认值和规则的完整性检查,实施更加复杂的业务规则。
9.4.1 触发器的概念和工作原理
2. 触发器的分类
SQL Server包括3种常规类型的触发器:DML触发器、DDL触发器和登录触发器。
(1)DML触发器
DML触发器是作用在表或视图上的一种触发器,当数据库服务器中发生数据操作(插入、修改、删除)事件时执行相关操作。主要有以下3种。
① INSERT触发器:向表中插入数据时被触发。
② DELETE触发器:从表中删除数据时被触发。
③ UPDATE触发器:修改表中数据时被触发。
9.4.1 触发器的概念和工作原理
(2)DDL触发器
DDL触发器是当服务器或者数据库中发生以CREATE、DROP、ALTER开头的语句事件时被激活使用。使用DDL触发器可以防止对数据架构进行某些更改或记录数据中的更改及事件操作。
(3)登录触发器
登录触发器是由登录(LOGON)事件而激活的触发器。登录触发器将在用户身份验证阶段完成之后且用户会话实际建立之前被激发。如果身份验证失败,将不激发登录触发器。
9.4.1 触发器的概念和工作原理
2. 触发器的工作原理
每个触发器自动在内存中创建两个特殊的表:插入表(Inserted表)和删除表(Deleted表)。两个表均为只读的逻辑虚表,其表结构与触发器所作用的表的表结构相同。用户无权对其直接修改,触发器工作完成后自动删除这两个表。
9.4.1 触发器的概念和工作原理
2. 触发器的工作原理
Inserted表临时保存插入或更新后的记录行,可以利用此表检查插入的数据是否满足实际的业务需求。如果满足,接受操作;如果不满足,则向用户报告错误消息,并回滚操作。Deleted表临时保存删除或更新前的记录行,可以利用此表检查被删除的数据是否满足实际的业务需求。如果满足,接受操作;如果不满足,则向用户报告错误消息,并回滚操作。
9.4.2 创建触发器
SQL Server 2019提供给用户两种方式创建触发器:使用CREATE TRIGGER语句或使用Management Studio可视化界面。
1.创建DML触发器-----使用CREATE TRIGGER语句创建DML触发器
语法格式如下:
CREATE TRIGGER trigger_name
ON { table_name|view }
[WITH ENCRYPTION]
{FOR | AFTER | INSTEAD OF}
{[DELETE] [,] [INSERT] [,] [UPDATE]}
AS
sql_statement [;]
9.4.2 创建触发器
【例9.17】使用触发器级联删除,当删除课程表的某一课程信息时,级联删除其成绩信息。
CREATE TRIGGER del_c ON course
AFTER DELETE
AS
DELETE FROM SC
WHERE CNO IN
(SELECT CNO FROM deleted)
9.4.2 创建触发器
【例9.18】使用触发器,当更新SC表的成绩信息时,要求成绩的取值范围为0~100。
CREATE TRIGGER up_sc ON SC
AFTER UPDATE
AS
IF ( SELECT Score FROM INSERTED ) NOT BETWEEN 0 AND 100
BEGIN
PRINT '成绩取值范围应在0~100!'
ROLLBACK TRANSACTION
END
ELSE
PRINT '更新成功!'
9.4.2 创建触发器
1.创建DML触发器-----使用Management Studio创建触发器
打开Management Studio,在左侧对象资源管理器中依次展开“数据库”→“当前使用数据库”,找到欲创建触发器的表。
展开表选项,找到“触发器”选项,右击,在弹出的快捷菜单中选择“新建触发器…”命令。
在右侧工作区域看到该触发器的语句模板,在其中添加相应的内容,单击工具栏上的“执行”按钮即可。
9.4.2 创建触发器
2.创建DDL触发器
使用CREATE TRIGGER语句创建DDL触发器的语法格式如下:
CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
WITH ENCRYPTION
{ FOR | AFTER | {event_type | event_group }
AS
sql_statement[;]
9.4.2 创建触发器
【例9.19】创建一个DDL触发器No_update,禁止修改和删除当前数据库中的任何表。
USE TeachSystem
GO
CREATE TRIGGER No_update
ON DATEBASE
FOR DROP_TABLE, DELETE_TABLE
AS
PRINT '基础表不能被修改或删除'
ROLLBACK
GO
9.4.3 查看、删除、修改触发器
1.查看触发器
与存储过程一样,查看触发器主要有两种方法,分别为使用Management Studio可视化界面查看触发器和使用系统存储过程查看触发器。
用户可以通过系统存储过程sp_help、sp_helptext、sp_helptrigger查看触发器信息,各系统存储过程查看的触发器信息的侧重点不同。
9.4.3 查看、删除、修改触发器
2.删除触发器
触发器作为数据库的一个对象,用户可以使用对象资源管理器将其删除。同样,也可以使用DROP TRIGGER命令将其删除。注意,如果用户将基本表删除,那么创建在其上的所有触发器将一并被删除。
9.4.3 查看、删除、修改触发器
3.修改触发器
修改DML触发器的语法格式如下所示:
ALTER TRIGGER schema_name.trigger_name
ON ( table | view )
[ WITH ENCRYPTION ]
{ FOR | AFTER | INSTEAD OF }
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE] }
AS sql_statement [ ; ]
9.4.3 查看、删除、修改触发器
3.修改触发器
修改DDL触发器的语法格式如下所示:
ALTER TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH ENCRYPTION ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS sql_statement [ ; ]
9.4.4 禁用和启用触发器
有些情况下,用户只是希望暂停数据库基本表上触发器的使用,但并不删除触发器,该触发器仍然作为对象存在于当前数据库中,但是,当执行任意 INSERT、UPDATE或DELETE语句(在其上对触发器进行了编程)时,该触发器不会被激发。待到某种合适的时机再次启用触发器,可以使之继续工作。
这时就可使用DISABLE TRIGGER语句和ENABLE TRIGGER语句进行设定。
9.4.4 禁用和启用触发器
其语法格式如下所示:
{ENABLE | DISABLE} TRIGGER { [schema_name.] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
也可以使用如下语句:
--禁用触发器
ALTER TABLE tablename DISABLE TRIGGER triggername [ALL]
--启动触发器
ALTER TABLE tablename ENABLE TRIGGER triggername [ALL]
本章小结
本章主要讲述了SQL Server 2019的高级应用。包括使用T-SQL语句和命令进行程序设计的编程基础,协调面向集合的数据库管理系统和面向行的程序设计两种不同处理方式的游标,经过预编译后能够通过名称直接重复调用的存储过程,以及通过事件触发执行、用来强化约束和维护数据一致性和完整性的触发器。通过高级应用的使用,用户可以更准确地设计数据库,实现现实世界中更为复杂的逻辑关系。

展开更多......

收起↑

资源预览