欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    计算机原理 第9章 存储过程与触发器课件.ppt

    • 资源ID:1547189       资源大小:1.12MB        全文页数:113页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    计算机原理 第9章 存储过程与触发器课件.ppt

    学习目标: 通过本章学习,你能够学会:1. 了解存储过程与触发器的特性2. 了解存储过程与触发器的优点3. 应熟练掌握使用企业管理器创建、修改、删除和查看存储过程与与触发器的操作。4. 应熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程与与触发器的操作。,第9章 存储过程与触发器,存储过程与触发器是SQL Server中的两类数据库对象。它们都是由T-SQL语句编写而成的过程,所不同的是存储过程是由用户根据需要调用执行的,而触发器则是由某个动作(如删除或修改一条记录)引发执行的。另外,存储过程可以不依附于表而单独存在,而触发器则必须依附于一个特定的表。它们与函数也不同,函数可以直接通过函数名返回数值,其返回值可以直接在表达式中使用,而存储过程与触发器则不能直接通过其名称带回返回值,也不能直接在表达式中使用。,第9章 存储过程与触发器,91 存储过程概念实例9.1 了解存储过程的执行过程,如图9.1所示。 归纳分析: 在SQL Server中定义的过程被称为存储过程。存储过程是一组预先编译好的T-SQL代码,作为一个整体用于执行特定的操作。存储过程属于数据库对象,它们存放在数据库中,需要时用户可以调用。,第9章 存储过程与触发器,存储过程具有如下优点: 1. 存储过程将一系列复杂的T-SQL代码封装在一起作为数据库对象存放在数据库 中,用户使用时不必接触T-SQL而仅需直接调用即可得到所需结果,简化了用户的操作。 2. 存储过程已经被编译,执行时省去了编译与优化的时间。另外,第一次从磁盘调用存储过程后,它将驻留在内存中,下一次使用时可以直接从内存中调用,因此对于需要多次调用的存储过程而言,速度明显加快。 3.在分布式查询中,调用存储过程的语句将比直接使用T-SQL的语句少得多,这将大大减少网络流量。 4.通过适当的权限设置,可以使系统的安全性得到更有效的保障。,第9章 存储过程与触发器,92 存储过程分类实例9.2 查看系统存储过程。 操作步骤:,第9章 存储过程与触发器,归纳分析: SQL Server的存储过程分为三大类: 1系统存储过程 系统存储过程是SQL Server内置的存储过程,可以直接用于执行一些操作,用于进行系统管理、登录管理、权限设置、数据库对象管理、查看数据库信息、数据库复制等操作。系统存储过程存放在master数据库中,以sp_作为前缀。在任何数据库中无需用master限定就直接执行。,第9章 存储过程与触发器,2临时存储过程 临时存储过程与临时表类似。是对用户定义的存储过程。以#、或#开头的存储过程。无论用户在哪个数据库中创建,它们都存放在临时数据库tempdb中。以#开头的存储过程是局部临时存储过程,它仅能由其创建者本人在创建完后立即调用,一旦该创建者断开与数据库的连接,局部临时存储过程立即被删除。以#开头的存储过程是全局临时存储过程,它可以由创建者本人和其他用户在创建完后共同调用,一旦创建者断开与数据库的连接,则不再允许新的用户使用,而且等其他正在使用该存储过程的用户使用完毕后,全局临时存储过程也被删除。,第9章 存储过程与触发器,3. 扩展存储过程 是利用高级语言(如C语言)编写的存储过程,是SQL Server可以动态装载并执行的动态链接库(DLL)。扩展存储过程只能添加到master数据库中。本章不介绍扩展存储过程有关内容,读者可以参考其他书籍有关内容。,第9章 存储过程与触发器,93存储过程创建931使用企业管理器创建存储过程实例9.3 在企业管理器中建立名为pro_new的存储过程,并执行。 操作步骤:,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,932 使用T-SQL语句创建存储过程实例9.4 在“学生”数据库中建立一个存储过程pro_new1,用于查询所有学生的学号和数学期中成绩、计算机期中成绩,要求数学期中成绩和计算机期中成绩分别列出。已知数学期中成绩的课程号是1002、计算机期中成绩的课程号是2005。 操作步骤:,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,932 使用T-SQL语句创建存储过程实例9.4 在“学生”数据库中建立一个存储过程pro_new1,用于查询所有学生的学号和数学期中成绩、计算机期中成绩,要求数学期中成绩和计算机期中成绩分别列出。已知数学期中成绩的课程号是1002、计算机期中成绩的课程号是2005。 操作步骤:,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式: CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,94 执行存储过程实例9.5 分别执行实例9.3、实例9.4建立存储过程。 操作步骤:,第9章 存储过程与触发器,归纳分析:注意:执行存储过程时,区分大小写。 存储过程一旦编写好后,就可以调用执行。执行存储过程的语法如下。命令格式: EXECUTE 存储过程名 字符串变量|NSQL语句字符串+n,第9章 存储过程与触发器,95 修改存储过程951 更改存储过程名称实例9.6 将实例9.3所创建的名为pro_new存储过程,修改成名为pro_存储过程。 操作步骤: (1) 启动“查询分析器”,输入如下SQL语句: sp_rename pro_new , pro_存储过程 (2)按“F5”键或单击工具栏“执行查询”图标。,第9章 存储过程与触发器,归纳分析: 只有数据库所有者和存储过程的所有者才有权修改存储过程名称。不宜轻易修改存储过程名称,因为系统中许多应用程序可能都要调用存储过程,如果修改了存储过程的名称,则这些应用程序都要随之改动。命令格式: sp_rename 原存储过程名,新存储过程名 修改存储过程名称的方法与修改表名称的方法类同,读者可以参照执行。 使用企业管理器修改存储过程名称的方法也类似于修改表名称的方法,即展开指定的数据库节点,单击存储过程,在右边的窗口中选中一个需要修改名称的存储过程右击之,在弹出的快捷菜单中选择“重命名”。,第9章 存储过程与触发器,952 修改存储过程的参数与定义1. 使用企业管理器修改存储过程实例9.7 使用企业管理器修改存储过程实例9.4,增加显示课程号的列。 操作步骤:,第9章 存储过程与触发器,2. 使用T-SQL语句修改存储过程实例9.8 在实例9.4创建的存储过程,修改查询记录按名次排列。 操作步骤:,第9章 存储过程与触发器,归纳分析: 修改已经创建的存储过程,可以不更改其用户的使用权限,也不更改其名称,因此不会破坏其他相关程序的引用关系。 命令格式: ALTER PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句 命令说明: 其中各项语法含义与创建存储过程类似。,第9章 存储过程与触发器,96 删除存储过程961使用企业管理器删除存储过程实例9.9 使用企业管理器删除存储过程。 操作步骤:,第9章 存储过程与触发器,存储过程与触发器是SQL Server中的两类数据库对象。它们都是由T-SQL语句编写而成的过程,所不同的是存储过程是由用户根据需要调用执行的,而触发器则是由某个动作(如删除或修改一条记录)引发执行的。另外,存储过程可以不依附于表而单独存在,而触发器则必须依附于一个特定的表。它们与函数也不同,函数可以直接通过函数名返回数值,其返回值可以直接在表达式中使用,而存储过程与触发器则不能直接通过其名称带回返回值,也不能直接在表达式中使用。,第9章 存储过程与触发器,归纳分析: SQL Server的存储过程分为三大类: 1系统存储过程 系统存储过程是SQL Server内置的存储过程,可以直接用于执行一些操作,用于进行系统管理、登录管理、权限设置、数据库对象管理、查看数据库信息、数据库复制等操作。系统存储过程存放在master数据库中,以sp_作为前缀。在任何数据库中无需用master限定就直接执行。,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式: CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,归纳分析: 只有数据库所有者和存储过程的所有者才有权修改存储过程名称。不宜轻易修改存储过程名称,因为系统中许多应用程序可能都要调用存储过程,如果修改了存储过程的名称,则这些应用程序都要随之改动。命令格式: sp_rename 原存储过程名,新存储过程名 修改存储过程名称的方法与修改表名称的方法类同,读者可以参照执行。 使用企业管理器修改存储过程名称的方法也类似于修改表名称的方法,即展开指定的数据库节点,单击存储过程,在右边的窗口中选中一个需要修改名称的存储过程右击之,在弹出的快捷菜单中选择“重命名”。,第9章 存储过程与触发器,96 删除存储过程961使用企业管理器删除存储过程实例9.9 使用企业管理器删除存储过程。 操作步骤:,第9章 存储过程与触发器,962 使用T-SQL语言删除存储过程实例9.10 删除Pro_new存储过程。 操作步骤:(1) 启动“查询分析器”,输入如下SQL语句: DROP PROCEDURE Pro_new(2)按“F5”键或单击工具栏“执行查询”图标。归纳分析: 不再需要存储过程时,可以利用企业管理器或T-SQL语言删除。 命令格式: DROP PROCEDURE 存储过程名称或存储过程组名称 注意:删除存储过程组时不必写出下标,即可将组中所有成员全部删除。,第9章 存储过程与触发器,97 查看存储过程971使用企业管理器查看存储过程的信息实例9.11 使用企业管理器查看存储过程的信息。 操作步骤: 在图9.4所示属性对话框中可以查询存储过程的名称、所有者、建立时间和文本信息。 在图9.3所示窗口的右部选中一个存储过程并右击,在弹出的级联菜单中依次选择“所有任务”、“显示相关性”,系统会弹出“显示相关性”对话框,该对话框显示一个存储过程所引用的表及其列信息。,第9章 存储过程与触发器,972 使用T-SQL语言查看存储过程的信息实例9.12 利用系统存储过程查询 pro_存储过程的信息。 操作步骤:,第9章 存储过程与触发器,归纳分析: (1)查看定义存储过程的文本命令格式: sp_helptext obiname= 存储过程名 (2)查看存储过程的名称、所有者、建立时间命令格式: sp_help obiname= 存储过程名 (3)查看存储过程所引用的表(或查看一个表被哪些存储过程所引用) 命令格式: sp_depends obiname= 表名 (4)查看一个存储过程引用了哪些表及其列: sp_depends obiname= 存储过程名,第9章 存储过程与触发器,归纳分析: (1)查看定义存储过程的文本命令格式: sp_helptext obiname= 存储过程名 (2)查看存储过程的名称、所有者、建立时间命令格式: sp_help obiname= 存储过程名 (3)查看存储过程所引用的表(或查看一个表被哪些存储过程所引用) 命令格式: sp_depends obiname= 表名 (4)查看一个存储过程引用了哪些表及其列: sp_depends obiname= 存储过程名,第9章 存储过程与触发器,命令格式: CREATE PROCEDURE 存储过程名 参数名 数据类型=默认值 WITHEN ENCRYPTION WITHRE RECOMPILE AS SQL语句命令说明: “参数名”和定义局部变量一样,必须以符号为前缀,要指定数据类型,多个参数定义要用逗号“,”隔开。在执行存储过程时该参数将由指定的参数值来代替,如果执行时未提供该参数的参数值,则如果这里定义了默认值则使用该值作为执行时的参数值,默认值可以是常量或空(NULL)。,第9章 存储过程与触发器,99创建触发器 SQL Server 2000提供了两种主要机制用于维护数据的完整性:一种是第8章介绍的约束,另一种就是本章将要介绍的触发器。触发器虽然是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在(这点与约束十分类似)。触发器又不像存储过程那样需要调用才能执行,而是在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。,第9章 存储过程与触发器,992 使用T-SQL语句创建触发器实例9.16 建立一个触发器,防止用户在要删除表学生信息中的一条数据时,由于没有使用限制条件(误用SELECT FROM 学生信息语句)而导致删除全部数据的情况发生。 操作步骤:,第9章 存储过程与触发器,(4) INSERT,UPDATE , DELETE:指定在表或视图上执行哪些数据修改语句时将激活触发器。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔。(5) IF UPDATE(列名)(AND|OR) UPDATE(列名)n:判定某一列或几列,是否被修改。如果希望仅当某一列(或几列)的数据发生变化才导致触发器动作,而其他列的数据变化不会引发触发器执行,则可以采用本选项。此时可以称之为列级触发器。,第9章 存储过程与触发器,归纳分析: SQL Server 2000中可以建立两类触发器,一类是在触发后将执行一组新的T-SQL语句用以代替引起触发器执行的语句(原有语句没有执行,仅执行新语句),称之为INSTEAD OF触发器:另一类是在引起触发器执行的语句执行完毕后,再执行触发器中的语句,称之为AFTER类触发器。(1)INSTEAD OF触发器既可以在表上定义,也可以在视图上定义。该类触发器依据其触发动作(UPDATE、DELETE和INSERT)的不同分为INSTEAD OF INSERT、INSTEAD OF UPDATE和INSTEAD OF DELETE三种,被引发执行时将分别代替表或视图的INSERT、UPDATE、DELETE操作,亦即表中的增删改操作没有进行。每个触发动作仅可以定义一个INSTEAD OF触发器。,第9章 存储过程与触发器,9112 修改触发器的定义 实例9.21 在企业管理器中修改实例9.17将删除表改为添加记录。 操作步骤:(3)单击检查语法按钮,进行语法检查,成功后,可插入数据检验触发器的效果。,第9章 存储过程与触发器,4. 应熟练掌握使用企业管理器创建、修改、删除和查看存储过程的操作。5. 应熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程的操作。6. 应掌握使用T-SQL语句带参数和变量创建和修改存储过程,及如何执行存储过程。7. 了解触发器在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。8. 触发器的优点: (1)触发器可以实现外键约束的功能,实现对表的级连修改。,第9章 存储过程与触发器,9.15.2 实训1 实训目的 (1) 熟练掌握用T-SQL语句存储过程与触发器所需的记录。 (2) 熟练掌握用T-SQL语句编写的操作过程。 (3) 熟练掌握存储过程与触发器的表示方法。 (4) 熟练掌握使用企业管理器创建、修改、删除和查看存储过程与与触发器的操作。 (5) 熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程与与触发器的操作。 2实训环境 SQL Server 2000的运行、管理环境。,第9章 存储过程与触发器,98 存储过程编程981 参数和变量实例9.13 创建的存储过程,修改成当输入学生学号时可以查询某个学生的成绩:不输入学号时,则查询全部学生的成绩。 操作步骤:,第9章 存储过程与触发器,(3)本例定义了一个输入参数stuID用于传送学号,其默认值为空。执行存储过程时,如果指定了该输入参数的值,则按照该参数所给的学号查询指定学生的成绩,如果参数stuID的值为空,则查询所有学生成绩。输入如图9.8所示上部分程序,查看运行结果,如图9.8所示下部分。,第9章 存储过程与触发器,归纳分析:1.建立带输入参数的存储过程 向存储过程指定输入、输出参数的主要目的是通过参数向存储过程输入和输出信息来扩展存储过程的功能。通过使用参数,可以多次使用同一存储过程并按用户要求查找所需要的结果。如实训9.13所示,没有参数就缺少灵活性。 一个存储过程可以带一个或多个输入参数,输入参数是指由调用程序向存储过程传递的参数,它们在创建存储过程语句中被定义,在执行存储过程中给出相应的参数值。,第9章 存储过程与触发器,命令格式: CREATE PROCEDURE 存储过程名 参数名 数据类型=默认值 WITHEN ENCRYPTION WITHRE RECOMPILE AS SQL语句命令说明: “参数名”和定义局部变量一样,必须以符号为前缀,要指定数据类型,多个参数定义要用逗号“,”隔开。在执行存储过程时该参数将由指定的参数值来代替,如果执行时未提供该参数的参数值,则如果这里定义了默认值则使用该值作为执行时的参数值,默认值可以是常量或空(NULL)。,第9章 存储过程与触发器,2执行带参数的存储过程 在执行存储过程的语句中,有两种方式来传递参数值,分别是使用参数名传递参数值和按参数位置传递参数值。 使用参数名传递参数值,是通过语句“参数名:参数值”给参数传递值。当存储过程含有多个输入参数时,参数值可以按任意顺序制定,对于允许空值和具有默认值的输入参数可以不给出参数的传递值。 执行使用参数名传递参数值的存储过程的命令格式: EXECUTE 存储过程名 参数名=参数值 按参数位置传递参数值,不显式地给出“参数名”,而是按照参数定义的顺序给出参数值。按位置传递参数时,也可以忽略允许空值和具有默认值的参数,但不能因此破坏输入参数的指定顺序。必要时,使用关键字“DEFAULT”作为默认值的占位。,第9章 存储过程与触发器,982 RETURN语句和错误处理实例9.14 在学生成绩表基础上建立一个存储过程pro_new3,要求:未输入学生学号时打印一个字符串“请输入学号”,并返回数字1;输入的学号查询不到时打印一个字符串“没有您输入的学号,请重新输入”,并返回数字2:输入学生学号正确时,查询该学号对应的期中成绩(课程号为1002)考试成绩。 操作步骤:,第9章 存储过程与触发器,归纳分析: 用户可以通过RETUEN语句返回状态值,RETURN语句只能返回整数,在存储过程中RETURN不能返回空值,默认返回值是0。也可以利用它返回整数输出参数值。,第9章 存储过程与触发器,99创建触发器 SQL Server 2000提供了两种主要机制用于维护数据的完整性:一种是第8章介绍的约束,另一种就是本章将要介绍的触发器。触发器虽然是一种特殊的存储过程,但是它与表却是紧密联系的,离开了表它将不复存在(这点与约束十分类似)。触发器又不像存储过程那样需要调用才能执行,而是在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。,第9章 存储过程与触发器,991使用企业管理器创建触发器实例9.15 在表学生成绩中建立一个触发器,当向表中插入一条记录时,检查该学生的学号是否存在于表学生信息中,如果存在,则插入;否则,打印“学号不存在”,并回滚事务,使插入数据无效。 操作步骤:,第9章 存储过程与触发器,归纳分析:创建触发器之前要注意如下几点: (1)创建触发器所使用的语句CREATET RIGGER必须是批处理中的第一个语句。(2)只有表的所有者、sysadmin固定服务器角色成员以及db_owner和曲_ddladmin固定数据库角色成员有权在本表上创建触发器,且不能将该权限授予其他用户。(3)触发器为数据库对象,其命名规则必须与标识符命名规则一致。(4)只能在当前数据库中创建触发器,但是触发器可以引用其他数据库的对象。(5)不能在临时表或系统表上创建触发器。触发器可以引用临时表,但不能引用系统表。(6)尽管TRUNCATE TABLE语句用于删除表中所有记录,但由于它不写入日志,故不能引发DELETE触发器。,第9章 存储过程与触发器,(7) WRITETEXT语句不会引发INSERT或UPDATE触发器。 (8) 如果一个触发器中含有回滚事务语句RULLBACK TRANSACTION,且引发触发器的语句位于一个事务中,则该触发器触发时将回滚事务。 (9) 在触发器内不能使用的命令有:CREATE、ALTER、GRANT、REVOKE、TRUNCATE TABLE、DROP等。 (10) 如果一个触发器中含有回滚事务语句RULLBACK TRANSACTION,且引发该触发器的语句位于一个批中,则一旦触发器执行,该批中引发触发器执行的语句之后的所有语句将不会执行。,第9章 存储过程与触发器,992 使用T-SQL语句创建触发器实例9.16 建立一个触发器,防止用户在要删除表学生信息中的一条数据时,由于没有使用限制条件(误用SELECT FROM 学生信息语句)而导致删除全部数据的情况发生。 操作步骤:,第9章 存储过程与触发器,(3)本例建立了一个AFIER触发器(仅给出FOR表示默认为AFTER型触发器)用于DELETE操作,首先声明一个局部变量用以存放Deleted表中数据行数。当对学生信息表执行删除操作时,检查删除的行数(Deleted表中数据行数),如果行数1,则认为操作错误,打印提示信息并回滚事务,使删除无效。但是如果使用TRUNCATE TABLE学生信息清除表中所有数据,则触发器不会触发,可以成功删除全部数据。,第9章 存储过程与触发器,归纳分析:使用T-SQL语句创建触发器基本语法如下。命令格式: CREATE TRIGGER 触发器名 ON表|视图 WITH ENCRYPTION FOR |AFTER |INSTEAD OFINSERT,UPDATE , DELETE NOT FOR REPLICATION AS IF UPDATE(列名)(AND|OR) UPDATE(列名)n SQL语句,第9章 存储过程与触发器,命令说明: (1)触发器的名称,必须符合标识符规则,并且必须在数据库中惟一。 (2)WITH ENCRYPTION用于加密CREATE TRIGGER语句文本的条目。 (3)FOR:用以指定触发器的类型,该关键字可以省略。后面为AFTER时表示触发器为AFTER类型,后面为INSTEAD OF时表示触发器为INSTEAD OF类型。如果仅指定FOR关键字,则默认为AFTER触发器。,第9章 存储过程与触发器,(4) INSERT,UPDATE , DELETE:指定在表或视图上执行哪些数据修改语句时将激活触发器。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔。(5) IF UPDATE(列名)(AND|OR) UPDATE(列名)n:判定某一列或几列,是否被修改。如果希望仅当某一列(或几列)的数据发生变化才导致触发器动作,而其他列的数据变化不会引发触发器执行,则可以采用本选项。此时可以称之为列级触发器。,第9章 存储过程与触发器,(4) INSERT,UPDATE , DELETE:指定在表或视图上执行哪些数据修改语句时将激活触发器。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔。(5) IF UPDATE(列名)(AND|OR) UPDATE(列名)n:判定某一列或几列,是否被修改。如果希望仅当某一列(或几列)的数据发生变化才导致触发器动作,而其他列的数据变化不会引发触发器执行,则可以采用本选项。此时可以称之为列级触发器。,第9章 存储过程与触发器,UPDATE操作相当于先执行DELETE操作,然后再执行INSERT操作,因此要用到Deleted与Inserted两个表。,第9章 存储过程与触发器,归纳分析: SQL Server 2000中可以建立两类触发器,一类是在触发后将执行一组新的T-SQL语句用以代替引起触发器执行的语句(原有语句没有执行,仅执行新语句),称之为INSTEAD OF触发器:另一类是在引起触发器执行的语句执行完毕后,再执行触发器中的语句,称之为AFTER类触发器。(1)INSTEAD OF触发器既可以在表上定义,也可以在视图上定义。该类触发器依据其触发动作(UPDATE、DELETE和INSERT)的不同分为INSTEAD OF INSERT、INSTEAD OF UPDATE和INSTEAD OF DELETE三种,被引发执行时将分别代替表或视图的INSERT、UPDATE、DELETE操作,亦即表中的增删改操作没有进行。每个触发动作仅可以定义一个INSTEAD OF触发器。,第9章 存储过程与触发器,9112 修改触发器的定义 实例9.21 在企业管理器中修改实例9.17将删除表改为添加记录。 操作步骤:(3)单击检查语法按钮,进行语法检查,成功后,可插入数据检验触发器的效果。,第9章 存储过程与触发器,912 删除触发器 实例9.23 删除不用的触发器名。操作步骤:,第9章 存储过程与触发器,归纳分析: 触发器创建以后,可以使用系统存储过程浏览触发器的有关信息。(1)显示触发器对象的类型。创建时间、所有者信息。 sp_help 触发器名(2)显示触发器的定义文本。如果触发器使用了加密(WITH ENCRYPTION选项),则无法看到触发器的代码文本。 sp_helptext 触发器名,第9章 存储过程与触发器,4. 应熟练掌握使用企业管理器创建、修改、删除和查看存储过程的操作。5. 应熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程的操作。6. 应掌握使用T-SQL语句带参数和变量创建和修改存储过程,及如何执行存储过程。7. 了解触发器在对表中数据进行增、删、改(INSERT、UPDATE、 DELETE)操作时被触发而执行。触发器可以包含复杂的T-SQL语句。在触发器内设置回滚,可以将触发它的语句所在的事务全部回滚,这样检测到错误时可以回滚事务以撤销错误。8. 触发器的优点: (1)触发器可以实现外键约束的功能,实现对表的级连修改。,第9章 存储过程与触发器,9.15.2 实训1 实训目的 (1) 熟练掌握用T-SQL语句存储过程与触发器所需的记录。 (2) 熟练掌握用T-SQL语句编写的操作过程。 (3) 熟练掌握存储过程与触发器的表示方法。 (4) 熟练掌握使用企业管理器创建、修改、删除和查看存储过程与与触发器的操作。 (5) 熟练掌握使用T-SQL语句创建、修改、删除和查看存储过程,及如何执行存储过程与与触发器的操作。 2实训环境 SQL Server 2000的运行、管理环境。,第9章 存储过程与触发器,910 触发器介绍触发器具有如下优点: (1)触发器可以实现外键约束的功能,实现对表的级连修改。 (2)触发器可以实现核查约束的功能,而且其功能更为强大。它可以使用另一个表的内容来约束触发器所在表。 (3)如果对表中数据进行了增、删、改的操作,使用触发器可以根据修改前后的差异,采取相应的对策。 (4)允许在一个表中针对不同的增删改操作设置多个触发器,以完成各类不同任务。,第9章 存储过程与触发器,存储过程与触发器是SQL Server中的两类数据库对象。它们都是由T-SQL语句编写而成的过程,所不同的是存储过程是由用户根据需要调用执行的,而触发器则是由某个动作(如删除或修改一条记录)引发执行的。另外,存储过程可以不依附于表而单独存在,而触发器则必须依附于一个特定的表。它们与函数也不同,函数可以直接通过函数名返回数值,其返回值可以直接在表达式中使用,而存储过程与触发器则不能直接通过其名称带回返回值,也不能直接在表达式中使用。,第9章 存储过程与触发器,归纳分析: SQL Server的存储过程分为三大类: 1系统存储过程 系统存储过程是SQL Server内置的存储过程,可以直接用于执行一些操作,用于进行系统管理、登录管理、权限设置、数据库对象管理、查看数据库信息、数据库复制等操作。系统存储过程存放在master数据库中,以sp_作为前缀。在任何数据库中无需用master限定就直接执行。,第9章 存储过程与触发器,归纳分析: 如果是查看或修改已有存储过程的定义,则右击要查看或修改的存储过程,在弹出的快捷菜单中,选择“属性”命令,则调出“存储过程属性”窗口,在这里可以查看或修改存储过程的定义。,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式: CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,归纳分析: 只有数据库所有者和存储过程的所有者才有权修改存储过程名称。不宜轻易修改存储过程名称,因为系统中许多应用程序可能都要调用存储过程,如果修改了存储过程的名称,则这些应用程序都要随之改动。命令格式: sp_rename 原存储过程名,新存储过程名 修改存储过程名称的方法与修改表名称的方法类同,读者可以参照执行。 使用企业管理器修改存储过程名称的方法也类似于修改表名称的方法,即展开指定的数据库节点,单击存储过程,在右边的窗口中选中一个需要修改名称的存储过程右击之,在弹出的快捷菜单中选择“重命名”。,第9章 存储过程与触发器,96 删除存储过程961使用企业管理器删除存储过程实例9.9 使用企业管理器删除存储过程。 操作步骤:,第9章 存储过程与触发器,归纳分析: 在SQL Server中,使用CREATE PROCEDURE语句创建一个永久或临时存储过程。 命令格式: CREATE PROCEDURE 存储过程名 WITH ENCRYPTION WITH RECOMPILE AS SQL 语句命令说明: (1)WITH ENCRYPTION:对存储过程进行加密。 (2)WITH RECOMPILE:对存储过程重新编译。,第9章 存储过程与触发器,97 查看存储过程971使用企业管理器查看存储过程的信息实例9.11 使用企业管理器查看存储过程的信息。 操作步骤: 在图9.4所示属性对话框中可以查询存储过程的名称、所有者、建立时间和文本信息。 在图9.3所示窗口的右部选中一个存储过程并右击,在弹出的级联菜单中依次选择“所有任务”、“显示相关性”,系统会弹出“显示相关性”对话框,该对话框显示一个存储过程所引用的表及其列信息。,第9章 存储过程与触发器,命令格式: CREATE PROCEDURE 存储过程名 参数名 数据类型=默认值 WITHEN ENCRYPTION WITHRE RECOMPILE AS SQL语句命令说明: “参数名”和定义局部变量一样,必须以符号为前缀,要指定数据类型,多个参数定义要用逗号“,”隔开。在执行存储过程时该参数将由指定的参数值来代替,如果执行时未提供该参数的参数值,则如果这里定义了默认值则使用该值作为执行时的参数值,默认值可以是常量或空(NULL)。,第9章 存储过程与触发器,归纳分析: SQL Server 2000中可以建立两类触发器,一类是在触发后将执行一组新的T-SQL语句用以代替引起触发器执行的语句(原有语句没有执行,仅执行新语句),称之为INSTEAD OF触发器:另一类是在引起触发器执行的语句执行完毕后,再执行触发器中的语句,称之为AFTER类触发器。(1)INSTEAD OF触发器既可以在表上定义,也可以在视图上定义。该类触发器依据其触发动作(UPDATE、DELETE和INSERT)的不同分为INSTEAD OF INSERT、INSTEAD OF UPDATE和INSTEAD OF DELETE三种,被引发执行时将分别代替表或视图的INSERT、UPDATE、DELETE操作,亦即表中的增删改操作没有进行。每个触发动作仅可以定义一个INSTEAD OF触发器。,第9章 存储过程与触发器,98 存储过程编程981 参数和变量实例9.13 创建的存储过程,修改成当输入学生学号时可以查询某个学生的成绩:不输入学号时,则查询全部学生的成绩。 操作步骤:,第9章 存储过程与触发器,2执行带参数的存储过程 在执行存储过程的语句中,有两种方式来传递参数值,分别是使用参数名传递参数值和按参数位置传递参数值。 使用参数名传递参数值,是通过语句“参数名:参数值”给参数传递值。当存储过程含有多个输入参数时,参数值可以按任意顺序制定,对于允许空值和具有默认值的输入参数可以不给出参数的传递值。 执行使用参数名传递参数值的存储过程的命令格式: EXECUTE 存储过程名 参数名=参数值 按参数位置传递参数值,不显式地给出“参数名”,而是按照参数定义的顺序给出参数值。按位置传递参数时,也可以忽略允许空值和具有默认值的参数,但不能因此破坏输入参数的指定顺序。必要时,使用关键字“DEFAULT”作为默认值的占位。,第9章 存储过程与触发器,991使用企业管理器创建触发器实例9.15 在表学生成绩中建立一个触发器,当向表中插入一条记录时,检查该学生的学号是否存在于表学生信息中,如果存在,则插入;否则,打印“学号不存在”,并回滚事务,使插入数据无效。 操作步骤:,第9章 存储过程与触发器,(3)本例建立了一个AFIER触发器(仅给出FOR表示默认为AFTER型触发器)用于DELETE操作,首先声明一个局部变量用以存放Deleted表中数据行数。当对学生信息表执行删除操作时,检查删除的行数(Deleted表中数据行数),如果行数1,则认为操作错误,打印提示信息并回滚事务,使删除无效。但是如果使用TRUNCATE TABLE学生信息清除表中所有数据,则触发器不会触发,可以成功删除全部数据。,第9章 存储过程与触发器,(4) INSERT,UPDATE , DELETE:指定在表或视图上执行哪些数据修改语句时将激活触发器。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔。(5) IF UPDATE(列名)(AND|OR) UPDATE(列名)n:判定

    注意事项

    本文(计算机原理 第9章 存储过程与触发器课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开