(中职)计算机组装与维护A0801教学课件_第1页
(中职)计算机组装与维护A0801教学课件_第2页
(中职)计算机组装与维护A0801教学课件_第3页
(中职)计算机组装与维护A0801教学课件_第4页
(中职)计算机组装与维护A0801教学课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、正版可修改PPT课件(中职)计算机组装与维护A0801教学课件SQL Server数据库项目教程教学课件项目8:创建和管理触发器我们毕业啦其实是答辩的标题地方任务1 创建触发器 在“学生成绩系统”数据库dbStudentScore中创建触发器,要求如下:(1)拒绝用户对数据库中的表进行删除和修改操作。(2)每新添加一个学生,其对应的班级总人数自动更新。任务概述 本任务可以使用以下方法分别完成:(1)使用SSMS图形界面方式创建DDL触发器实现要求(1)。(2)使用T-SQL语句创建DML触发器实现要求(2)。在使用Create Trigger语法时需要注意触发器的类型。任务分析1. 知识准备C

2、ONTANTS2. 使用SSMS创建DDL触发器3. 使用T-SQL创建DML触发器思维导图知识准备1.1 触发器概述触发器是一种特殊类型的存储过程,与表的关系密切,用于保护表中的数据。当有操作影响到触发器保护的数据时,触发器将自动触发。触发器是一个功能很强大的工具,它让数据库可以在有数据修改时自动强制执行其业务规则。触发器可以用来强制实施复杂的业务规则,以此来确保数据的完整性。1.11 触发器的作用触发器的作用主要是能够实现主键和外键所不能保证的复杂性的参照完整性和数据一致性。它的主要作用有以下几点:1)强制数据库间的引用完整性2)创建多行触发器。当操作多行数据时,必须编写一个处理多行数据触

3、发器。3)执行级联更新或级联删除。4)级联修改数据库中所有相关表。5)撤销或者回滚违反引用完整性的操作,防止非法修改数据。1.12 触发器的分类DML(Data Manipulation Language)是数据操纵语言。DDL(Data Definition Language)是数据库模式定义语言。在SQL Server 2019 数据库中,触发器主要分为两类,即DML触发器和DDL触发器。1.12 触发器的分类按操作语句的不同分类DML触发器AFTER触发器INSTEAD OF触发器按操作的时机的不同分类DML触发器 DML触发器包括对表或视图DML操作激发的触发器。DML操作包括INSE

4、RT、UPDATE和DELETE语句。DML触发器INSERT触发器UPDATE触发器DELETE触发器1.12 触发器的分类DDL触发器 DDL触发器是当服务器或者数据库发生数据定义语言事件时被激活调用,使用DDL触发器可以防止对数据库架构进行某些更改或记录数据库架构中的更改或事件。DDL操作包括CREATE、ALTER或DROP等,该触发器一般用于管理和记录数据库对象的结构变化。1.2 Deleted表和Inserted表在触发器语句中用两个特殊的表:deleted表和inserted。它们是通过触发器操作自动创建驻留在内存中的临时的虚拟表。当触发器执行完成后,与该触发器相关的这两个表也会

5、被删除。1.21 Deleted表Deleted表用于存储 DELETE和 UPDATE语句所影响的行的副本。在执行DELETE或 UPDATE语句时,行从触发器表中删除,并传输到 deleted表中。Deleted表和触发器表通常没有相同的行。1.22 Inserted 表Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。1.23 数据变化操作类型临时表中数据的变化Inserted 表Deleted表Insert插入的记录空De

6、lete空删除的记录Update修改后的记录修改前的记录deleted表和inserted的数据变化情况1.3 DML触发器的创建语法CREATE TRIGGER trigger_nameON table | view FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE ASSql_statement1.31 DML创建语法参数说明(1)trigger_name :用于指定创建触发器的名称,该名称在数据库中必须是唯一的。(2)Table | view:用于指定在其上执行触发器的表或视图。(3)AFTER:用于说明触发器在指定操作都成功执行后触发。

7、(4)INSTEAD OF :指定用DML触发器中的操作代替触发语句的操作。(5)DELETE | INSERT | UPDATE:用于指定在表或者视图上执行哪些数据修改语句时将触发触发器的关键字。(6)Sql_statement:用于指定触发器所执行的T-SQL语句。1.4 DDL触发器的创建语法CREATE TRIGGER trigger_nameON ALL SERVER | DATABASE WITH ENCRYPTION FOR | AFTER event_type AS sql_statement1.41 DDL创建语法参数说明(1)ALL SERVER : 用于表示DDL触发器的

8、作用域是整个服务器。(2)DATABASE:用于表示DDL触发器的作用域是整个数据库。(3)Event_type:用于指定触发DDL触发器的事件。使用SSMS创建DDL触发器2.1 步骤实施(1)启动SSMS并连接到SQL Server数据库中,打开SSMS窗口,选择“数据库”“dbStudentScore” “可编程性” “数据库触发器”节点。右击结点,在弹出的快捷菜单中选择“新建数据库触发器”菜单命令。图8-1“新建数据库触发器”2.1 步骤实施(2)在创建触发器的窗口中选择“查询”“指定模板参数的值”菜单命令。弹出“指定模板参数的值”对话框,设置数据库名、触发器名和触发事件等参数,如图8

9、-2所示。图8-2设置参数值2.1 步骤实施(3)在创建的触发器窗口中,将对应的SQL语句修改为以下语句。BEGIN PRINT用户没有权限执行删除操作! ROLLBACK TRANSACTION-事务回滚ENDGO2.2 步骤实施(4)点击“执行”按钮,刷新左侧目录树,可在相应位置找到新创建的触发器trg_denyDeletebase。(5)验证触发器。修改dbStudentScore数据库tbStudent表中IDNumber列的长度为19,代码如下:USE dbStudentScore;GOALTER TABLE tbStudent ALTER COLUMN IDNumber VARCH

10、AR(19)2.2 步骤实施(6)执行代码,结果如图8-3所示,可知触发器已经起作用。图8-3激发触发器结果使用T-SQL创建DML触发器3.1 步骤实施(1)点击“新建查询”按钮,就可以在下面的命令界面中输入代码,如图8-4所示。图8-4查询界面3.1 步骤实施(2)输入以下代码。CREATE TRIGGER trg_InserttbStudent -触发器命名ON tbStudent -选择触发器表AFTER INSERT -激活触发器关键字ASBEGIN-声明两个变量,一个用来统计学生人数,一个来获取班级代码 DECLARE stuNumber INT,claID CHAR(6); -使

11、用SELECT语句从系统自动创建的INSERTED表中查询新添加学生的班级代码 SELECT claID=ClassID FROM INSERTED-统计该班级的最新人数 SELECT stuNumber=COUNT(*) FROM tbStudent WHERE ClassID=claID; -更新tbClass表中对应班级的总人数 UPDATE tbClass SET StudentTotals=stuNumber WHERE ClassID=claIDEND3.1 步骤实施(3)点击“执行”按钮,刷新左侧目录树,在tbStudent表下触发器结点下找到创建的触发器trg_InserttbStudent。(4)验证触发器。输入并执行以下代码,再查看结果 。select StudentTotals 插入数据前的班级人数 from tbClass where classID=C00014goinsert into tbStudent(StudentID ,StudentName,Sex,ClassID) values (S100101015,王柯,男,C00014)goselect Studen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论