第八章 存储过程与触发器_第1页
第八章 存储过程与触发器_第2页
第八章 存储过程与触发器_第3页
第八章 存储过程与触发器_第4页
第八章 存储过程与触发器_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

1、第八章第八章 存储过程与触发器存储过程与触发器 存储过程与触发器是数据库中的一个重要组成部分,存储过程可以把数据库的复杂操作封装为独立的程序模块,便于程序的维护和减少网络通讯流量。而触发器是可以自动调用执行的程序模块,可以实现比较复杂的约束功能,本章主要介绍了存储过程与触发器的概念,以及如何创建、使用和管理存储过程与触发器。8.1存储过程存储过程8.1.1存储过程概述 存储过程(Stored Procedure)是一组预先编译好的T-SQL代码。存储过程可以作为一个独立的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程经过了一次创建后,可以被多次调用。由于是已经编译好的代码,所以在

2、执行的时候不必再次进行编译,从而提高了程序的运行效率。使用存储过程具有以下优点: 存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。8.1存储过程存储过程存储过程可以重复使用,可减少数据库开发人员的工作量。使用存储过程可以完成所有数据库操作,并可通过编程方式控制对数据库信息访问的权限以提高安全性。8.1.28.1.2存储过程的类型存储过程

3、的类型 SQL Server支持的存储过程可分为5类:在不同情况下需要执行不同的存储过程。 系统存储过程、 本地存储过程、 临时存储过程、 远程存储过程 扩展存储过程。8.1存储过程存储过程 1系统存储过程 系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。系统存储过程定义在系统数据库master中,其前缀是sp_,它们为检索系统表的信息提供了方便快捷的方法。系统存储过程允许系统管理员执行修改系统表的数据库管理任务,可以在任何一个数据库中执行。 2本地存储过程 本地存储过程是指在用户数据库中创建的存储过程,这种存储过程完成用户指定的数据库操作,其名称不能以sp_为前缀。 3临时存储

4、过程 临时存储过程属于本地存储过程。如果本地存储过程的名称前面有一个#,该存储过程就称为局部临时存储过程,这种存储过程只能在一个用户会话中使用。8.1存储过程存储过程 如果本地存储过程的名称前有两个#,该过程就是全局临时存储过程,这种存储过程可以在所有用户会话中使用。 4远程存储过程 远程存储过程指从远程服务器上调用的存储过程。 5扩展存储过程 在SQL Server环境之外执行的动态链接库称为扩展存储过程,其前缀是sp_。使用时需要先加载到SQL Server系统中,并且按照使用存储过程的方法执行。 8.1存储过程存储过程8.1.3存储过程的创建 用户存储过程只能定义在当前数据库中,可以使用

5、SQL Server的企业管理器或Transact-SQL语句创建存储过程。默认情况下,用户创建的存储过程归数据库所有者拥有,数据库的所有者可以把许可授权给其他用户。1使用企业管理器创建存储过程 (1)启动企业管理器,登录到要使用的服务器。 (2)在企业管理器的左窗格中,展开要创建存储过程的数据库文件夹,单击“存储过程”文件夹,此时在右窗格中显示该数据库的所有存储过程。 (3)右击“存储过程”文件夹,在弹出的快捷菜单中选择“新建存储过程”,此时打开如图8-1所示的“新建存储过程”对话框。 8.1存储过程存储过程新建存储过程如图: 8.1存储过程存储过程(4)在“文本”编辑框中输入存储过程的正文

6、内容。(5)单击“检查语法”按钮,检查语法是否正确。(6)单击“确定”按钮保存。(7)在右窗格中,右击该存储过程,在弹出菜单中选择“所有任务”,选择“管理权限”设置权限。 8.1存储过程存储过程2.使用Transact-SQL语句创建存储过程CREATE PROCEDURE的语法形式如下:CREATE PROC procedure_name;number parameter data_type VARYING=defaultOUTPUT ,n WITH RECOMPILE | ENCRYPTION|RECOMPILEFOR REPLICATIONAS sql_statements8.1存储过程

7、存储过程其中其中: : procedure_name:用于定义存储过程名,必须符合标识符规则,且对于数据库及其所有者必须惟一;创建局部临时过程,可以在procedure name前面加一个#:创建全局临时过程,可以在procedure name前加#。 Number:为可选的整数,用于区分同名的存储过程,以便用一条DROP Procedure语句删除一组存储过程。 parameter:存储过程的形参,形参局部于该存储过程,参数名必须符合标识符规则,并且首字符必须为,可定义一个或多个形参,执行存储过程时应提供相应的实在参数,除非定义了该参数的默认值。8.1存储过程存储过程 Data_type:用

8、于指定形参数据类型,形参类型可为SQL Server支持的任何类型,但cursor类型只能用于OUTPUT参数,如果指定形参类型为cursor,必须同时指定VARYING和OUTPUT关键字。default指定存储过程输入参数的默认值,默认值必须是常量或NULL,默认值中可以包含通配符(%、_、和 ),如果定义了默认值,执行存储过程时根据情况可不提供实参。 OUTPUT:用于指定参数从存储过程返回信息。如果一个输出参数的类型为游标,并且结果集会动态变化,则使用关键字VARYING指明输出参数的内容可以变化。n表示可为存储过程指定若干个参数。 RECOMPILE:指明SQL Server每次运行

9、该过程时,将对其重新编译; 8.1存储过程存储过程 ENCRYPTION:表示SQL Server加密syscomments表中包含CREATE PROCEDURE语句文本的条目;使用ENCRYPTION可防止将过程作为SQL Server复制的一部分发布,防止用户使用系统存储过程读取存储过程的定义文本。 FOR REPLICATION:用于说明不能在订阅服务器上执行为复制创建的存储过程,该选项不能和WITH RECOMPILE一起使用。 sql_statements:存储过程体包含的T-SQL语句序列。 8.1存储过程存储过程 对于用户自定义存储过程要注意如下几点: 用户定义的存储过程只能在

10、当前数据库中创建(临时过程除外,临时过程总是在tempdb中创建)。 成功执行CREATE PROCEDURE语句后,过程名存储在sysobjects系统表中,而CREATE PROCEDURE语句的文本存储在syscomments表中。 自动执行存储过程。SQL Server启动时可以自动执行一个或多个存储过程。这些存储过程必须由系统管理员在master数据库中创建,并在sysadmin固定服务器角色下作为后台过程执行。这些过程不能有任何输入参数。 sql_statements的限制。除了SET SHOWPLAN_TEXT和SET SHOWPLAN_ ALL以外,其它SET语句均可以在存储过

11、程语句序列中使用。 存储过程的定义不能跨越批处理。 8.1存储过程存储过程【例8-1】创建一个简单的存储过程,实现检索学生的姓名、课程名和相应的成绩。USE student_msIF EXISTS(SELECT name FROM sysobjects WHERE name=suc_query AND TYPE=P)DROP PROCEDURE suc_queryGOCREATE PROCEDURE suc_queryASSELECT 姓名,课程名称,成绩FROM student,course,scoreWHERE student.学号=score.学号 AND course.课程号=scor

12、e.课程号ORDER BY student.学号GO 8.1存储过程存储过程【例8-2】创建一个具有返回参数的存储过程,实现按给定学号查询学生的姓名和平均成绩。USE student_msIF EXISTS(SELECT name FROM sysobjects WHERE name=sco_avg_query AND TYPE=P)DROP PROCEDURE sco_avg_queryGOCREATE PROCEDURE sco_avg_query(s_snum char(8),s_name char(10) OUTPUT,sco_avg float OUTPUT)ASSELECT s_n

13、ame=姓名,sco_avg=AVG(成绩)FROM student,course,scoreWHERE student.学号=score.学号 AND course.课程号=score.课程号GROUP BY student.姓名GO 8.1存储过程存储过程【例8-3】创建一个存储过程insert_pro,该存储过程包含两个默认参数,其值分别为:“男”和“党员”。在创建该存储过程前,先建立一个简单的空表stu,分别有姓名、性别、政治面貌三个字段,其中没有关键字并且允许空值。USE student_msIF EXISTS(SELECT name FROM sysobjects WHERE na

14、me=insert_pro AND TYPE=P)DROP PROCEDURE insert_proGOCREATE PROCEDURE insert_pro(char1 char(2)=男, char2 char(10)=党员)AS INSERT INTO stu (性别,政治面貌) VALUES(char1,char2)GO 8.1存储过程存储过程 8.1.38.1.3执行存储过程执行存储过程 通过EXEC命令可以执行一个已定义的存储过程,其语法格式为: EXEC return_status=procedure_name ,mumber | procedure_name_var param

15、eter= value | variable OUTPUT DEFAULT,nWITH RECOMPILE其中: 8.1存储过程存储过程 return_ status:是一个可选的整型变量,保存存储过程的返回状态。EXEC语句在使用该变量前,必须对其进行定义。 procedure_name:拟调用的存储过程名称。 procedure_name_var:局部定义变量名,代表存储过程名称。 number:用于指明组中的存储过程 parameter:过程参数,在CREATE PROCEDURE语句中定义。 Value:是存储过程中的实际参数。 variable:是用来保存OUTPUT参数返回值。 O

16、UTPUT:指定存储过程必须返回一个参数。 8.1存储过程存储过程 DEFAULT:根据过程的定义,提供参数的默认值。 n:表示可以指定一个或者多个parameter,value或variable。 WITH RECOMPILE:指明强制编译存储过程。【例8-4】执行例8-1中定义的存储过程,查询所有学生的成绩。在查询分析器中执行下列语句:USE student_msGOEXEC suc_queryGO 8.1存储过程存储过程【例8-5】执行例8-2中定义的存储过程,查询部分学生的成绩在查询分析器中执行下列语句:USE student_msDECLARE s_name char(10),sco

17、_avg numeric(5,2)EXEC sco_avg_query 010202,s_name OUTPUT,sco_avg OUTPUTSELECT 学生姓名=s_name,平均成绩=sco_avgGOGOALTER TABLE studentADD 身份证号码(19) NULLG0 8.1存储过程存储过程执行存储过程查询部分学生的成绩 : : 8.1存储过程存储过程【例8-6】执行例8-3中定义的存储过程,向表stu中插入三行数据。在查询分析器中执行下列语句:USE student_msEXEC insert_pro EXEC insert_pro 女EXEC insert_pro 女

18、,团员执行结果如图所示。 8.18.14 4存储过程的查看存储过程的查看创建存储过程之后,它的名字就存储在系统表sysobjects中,它的源代码存放在系统表syscomments中。可以使用企业管理器或系统存储过程查看用户创建的存储过程。 1在企业管理器中查看用户创建的存储过程(1)在企业管理器的左窗格中,展开要创建存储过程的数据库文件夹,单击“存储过程”文件夹,此时在右窗格中显示该数据库的所有存储过程。如图所示8.1存储过程存储过程 8.1存储过程存储过程 查看存储过程如图: (2) 右击要查看的存储过程,这里右击存储过程sco_avg_query,从弹出的快捷菜单中选择“属性”选项,弹出

19、“存储过程属性”对话框。在此对话框中能够看到存储过程的源代码,如图所示。8.1存储过程存储过程 (3) 如果从弹出的快捷菜单中依次选择“所有任务”、“显示相关性”选项,会弹出“相关性”对话框,显示与选择的存储过程有依赖关系的其他数据库对象的名称,如图所示。 8.1存储过程存储过程 2可以使用sp_helptext系统存储过程查看存储过程的定义信息。其语法格式为:sp_helptext procedure_name。【例8-7】查看数据库student_ms中存储过程sco_avg_query的定义。 在存储器中执行下列语句:USE student_msGOsp_helptext sco_avg

20、_query 8.1存储过程存储过程 存储过程的定义信息如图: 8.1存储过程存储过程 8.1.58.1.5存储过程的修改、删除存储过程的修改、删除 可以在企业管理器中修改、删除用户自定义的存储过程,也可以通过Transact-SQL语句修改、删除存储过程1在企业管理器中修改存储过程 打开“存储过程属性”对话框,在中间的文本编辑框中直接修改存储过程的定义;定义修改后,可以通过“检查语法”按钮对新定义的存储过程内容进行语法检查;并可以通过“权限”按钮,打开“对象属性”对话框,在其中勾选该存储过程的使用者,完成对存储过程的权限进行设置。修改设置完成后,单击“确定”按钮即可。 8.1存储过程存储过程

21、 2使用ALTER PROCEDURE命令可以修改已存在的存储过程。其语法形式为:ALTER PROCEDURE procedure_name;number parameter data_type VARYING=defaultOUTPUT ,n WITH RECOMPILE | ENCRYPTION|RECOMPILEFOR REPLICATIONAS sql_statements其中各个参数含义同CREATE PROCEDURE语句。 8.1存储过程存储过程 修改存储过程时,应注意以下几点:如果在CREATE PROCEDURE语句中使用过参数,那么在ALTER PROCEDURE语句中也

22、应该使用这些参数。每次只能修改一个存储过程。存储过程的创建者、dbwe owner和db_ ddladmin的成员拥有执行ALTER PROCEDURE语句的许可,其他用户不能使用。用ALTER PROCEDURE更改的存储过程的权限和启动属性保持不变。 8.1存储过程存储过程 3使用企业管理器删除存储过程 使用企业管理器删除一个或多个存储过程,先将它们选取,然后右击其中一个被选取的存储过程,并从快捷菜单中选取“删除”命令,接着再单击“除去对象”对话框中的“全部除去”按钮。4使用DROP PROCEDURE语句删除存储过程 删除存储过程使用DROP命令,DROP命令可将一个或多个存储过程或者存

23、储过程组从当前数据库中删除。具体语法如下: DROP PROC procedure_name,n 其中各参数的意义与修改存储过程命令中参数的意义相同。 8.1存储过程存储过程 【例8-8】将存储过程sco_avg_query从数据库中删除。DROP sco_avg_query注意:注意: 如果存储过程分组,则将无法删除组内的单个存储过程。要删除一个存储过程将会删除同一组内的所有存储过程. 如果用一个存储过程调用某个已被删除的存储过程,则SQL Server会在执行该过程调用时显示一条错误信息。而如果定义了一个与已被删除的存储过程同名的并且具有相同参数的新的存储过程,那么调用该过程的其它过程仍然

24、能够顺利执行。 8.1存储过程存储过程 8.2.18.2.1触发器概述触发器概述1触发器的概念 触发器是一种在基表被修改时能自动执行的内嵌存储过程过程,它主要是通过事件进行触发而被执行的过程,这有区别于普通的存储过程通过存储过程名被直接调用。也就是当一个特定的动作发生在一个特定的表上时,某个触发器被激活,从而确保对数据的处理必须符合由触发器中SQL语句所定义的规则。 每个触发器通常有三个通用的部分:名称、动作和执行。触发器的动作可以是INSERT 、 UPDATE或DELETE语句,触发器的执行部分通常含有一个存储过程或批处理,不允许使用参数,也不能被直接调用,只能由系统自动激活。触发器可以查

25、询其他表,而且可以包含复杂的SQL语句。它们主要用于控制复杂的业务规则或要求。 8.2 触发器触发器 2触发器的优点与其他约束相比较,触发器具有以下几个优点: (1)强制比CHECK约束更复杂的数据完整性 在数据库中要实现数据完整性的约束,可以使用CHECK约束或触发器来实现。但是在CHECK约束中不允许引用其他表中的列来完成检查工作,而触发器则可以引用其他表中的列来完成数据完整性的约束检查。(2)使用自定义的错误信息 用户有时需要在数据完整性遭到破坏或其他情况下,发出预先自定义好的错误信息或动态自定义的错误信息。通过使用触发器,用户可以捕获破坏数据完整性的操作,并返回自定义的错误信息。 8.

26、2 触发器触发器 (3)实现数据库中多张表的级联修改 用户可以通过触发器对数据库中的相关表进行级联修改。(4)比较数据库修改前后数据的状态 触发器具有访问由INSERT、UPDATE或DELETE语句引起的数据变化前后,表状态之间的差别的能力。因此用户就可以在触发器中引用由于修改所影响的记录行。(5)维护非规范化数据 用户可以使用触发器来保证非规范数据库中的低级数据的完整性。维护非规范化数据与表的级联是不同的。表的级联指的是不同表之间的主外键关系,维护表的级联可以通过设置表的主键与外键的关系来实现。而非规范数据通常是指在表中的派生的、冗余的数据值,维护非规范化数据应该通过使用触发器来实现。 8

27、.2 触发器触发器 3触发器类型 SQL Server 2000支持两种类型的触发器:AFTER触发器和INSTEAD OF触发器。 AFTER触发器要求只有执行了某些操作(INSERT、UPDATE,、DELETE)之后,触发器才被触发,且只能在表上定义,可以为针对表的同一操作定义多个触发器,也可定义哪个触发器先被触发,哪个后被触发,通常使用系统存储过程sp_set triggerorder来完成此任务。 INSTEAD OF触发器并不执行其所定义的操作,而仅执行触发器本身。该触发器既可在表上定义,也可在视图上定义,但对同一操作只能定义一个INSTEAD OF触发器。 8.2 触发器触发器

28、8.2.28.2.2触发器的创建触发器的创建 在SQL Server中,可以通过企业管理器或者使用Transact-SQL语句创建触发器。在创建触发器之前应该注意以下几个问题: CREATE TRIGGER语句必须是批处理中的第一个语句。将该批处理中随后的其他所有语句解释为CREATE TRIGGER语句定义的一部分。 当创建一个触发器时,必须指定触发器的名字,在哪一个表上定义触发器,激活触发器的修改语句,如INSERT,DELETE,UPDATE。当然两个或三个不同的修改语句也可以都触发同一个触发器,如INSERT和UPDATE语句都能激活同一个触发器。 触发器作为数据库对象,其名称必须遵循

29、标识符的命名规则。 创建触发器的权限默认分配给表的所有者,且不能将该权限转给其他用户。 8.2 触发器触发器 虽然触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 不能在临时表或系统表上创建触发器,但是触发器可以引用临时表。不应引用系统表,而应使用信息架构视图。 在含有用DELETE或UPDATE操作定义的外键的表中,不能定义INSTEAD OF 和INSTEAD OF UPDATE触发器。 虽然TRUNCATE TABLE语句类似于没有WHERE子句的DELETE语句,但它并不会引发DELETE触发器,因为TRUNCATE TABLE语句没有记录。 8.2 触发器触发器

30、1使用企业管理器创建触发器 (1)启动企业管理器,登录到要使用的服务器。 (2)在企业管理器的左窗格中,展开要创建触发器的数据库文件夹,单击“表”文件夹,此时在右窗格中显示该数据库的所有表。 (3)在右窗格中,右击要创建触发器的数据表,在弹出的快捷菜单中,选择“所有任务”“管理触发器”,打开“触发器属性”对话框。 (4)在“名称”下拉框中选择“新建”,在“文本”编辑框中输入触发器的文本语句。 (5)单击“检查语法”按钮,检查语句是否正确。 (6)单击“应用”按钮,在“名称”下拉列框中会有新创建的触发器名字。 (7)单击“确定”按钮,关闭窗口创建成功。 8.2 触发器触发器 2使用Transac

31、t-SQL语句创建触发器 使用Transact-SQL语言中的CREATE TRIGGER语句也可以创建触发器,其中需要指定定义触发器的基表、触发器执行的事件和触发器的所有指令。创建触发器的过程类似于创建存储过程,其语法格式如下: CREATE TRIGGER trigger_name ONtable | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE WITH APPENDNOT FOR REPLICATIONASIF UPDATE(column) AND|ORUPDATE(column) .n|I

32、F( COLUNNS_UPDATED()bitwise_operatorupdated_bitmask) comparison_operatorcolumn_bitmask.nsql_statement.n 8.2 触发器触发器 【例8-9】在student_ms数据库中,创建一个AFTER触发器,要求实现以下功能:在score表上创建一个插入、更新类型的触发器score_Check,当在成绩字段中插入或修改考试分数后,触发该触发器,检查分数是否在0100之间。在查询分析器中执行下列语句:USE student_msGOIF EXISTS(SELECT name FROM sysobjects

33、WHERE name=scoreCheckAND type=TR) DROP TRIGGER score_CheckGO 8.2 触发器触发器 CREATE TRIGGER score_CheckON scoreFOR INSERT, UPDATEASIF UPDATE(成绩)PRINT AFTER触发器开始执行BEGIN DECLARE ScoreValue real SELECT ScoreValue=(SELECT 成绩 FROM inserted) IF ScoreValue100 OR ScoreValue0 PRINT 输入的分数有误,请确认输入的考试分数!ENDGO 8.2 触发

34、器触发器 在上述的score_Check触发器创建过程中,使用了inserted表,实际上,这个表是在触发器被执行时,系统自动创建的。如果触发一个DELETE触发器时,系统同样会创建一个deleted表。下面介绍两个表的内容。 inserted逻辑表:用于保存基本表中被INSERT和UPDATE语句影响的数据行,当向表中插入数据时,INSERT触发器触发执行,新的记录插入到inserted表中。deleted逻辑表:用于保存已从基本表中删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted逻辑表中。 8.2 触发器触发器 当修改一条记录时,相当于插入一新记录,同时删除旧记

35、录。当对定义了UPDATE触发器的基本表记录进行修改时,表中原记录移到deleted表中,修改过的记录插入到inserted表中。 deleted、inserted两个逻辑表的查询方法与数据库表的查询方法相同。例如要检索deleted, inserted表中的所有记录,可使用如下语句:SELECT * FROM deletedSELECT * FROM inserted 一般来说,基本表中不会存在和deleted(inserted)中具有完全相同内容的数据行。 8.2 触发器触发器 8.2.38.2.3触发器的使用触发器的使用在创建好触发器以后,可以通过执行相应的SQL语句来使用触发器。【例8

36、-10】在score表中分别插入和更新数据,查看触发器执行效果,并通过比较不同的结果,了解触发器的执行过程。在查询分析器中执行下列语句:USE student_msGOPRINT 在score中插入记录时触发器执行结果:INSERT INTO scoreVALUES(010209,01003,127)GO 8.2 触发器触发器 PRINT 在score中修改记录时触发器执行结果:UPDATE scoreSET 成绩=107WHERE 学号=010532 AND 课程号=02003GOPRINT 插入符合要求的数据INSERT INTO scoreVALUES(010209,01003,87)G

37、O执行结果如图所示: 8.2 触发器触发器 触发器执行结果如图 : 8.2 触发器触发器 8.2.4查看触发器信息 像存储过程一样,触发器在创建后,其名称保存在系统表sysobjects中,并把创建的源代码保存在系统表syscomments中。如果要知道作用于表上的触发器是对哪个表在起作用,又作了哪些操作,必须通过查看触发器信息才可以知道。SQL Server为用户提供多种查看触发器信息的方法。 1. 使用企业管理器查看触发器定义信息 (1)打开“企业管理器”,展开数据库,右击需要查看的表。 (2)在弹出的菜单中选择“所有任务” “管理触发器”,SQL Server将弹出“触发器属性”对话框。

38、 (3)在“触发器属性”对话框中,通过“名称”下拉框,用户可以选择要查看的触发器名称,在下面的文本框中查看该触发器的定义语句。 8.2 触发器触发器 使用企业管理器查看与触发器有依赖关系的其他数据库对象(1)打开“企业管理器”,展开数据库,在右边的窗格中,右击需要查看的表。()在弹出的菜单中选择“所有任务” “显示相关性”,SQL Server将弹出“相关性”对话框。(3)在“相关性”对话框中,通过“对象”下拉框,用户可以选择要查看的触发器名称,左边的页框中会显示依赖于该对象的其他对象,右边的页框中会显示该对象所依赖的其他对象。 8.2 触发器触发器 3使用系统存储过程查看触发器 系统存储过程

39、sp_help 、 sp_helptext和sp_depends分别提供有关触发器的不同信息。 通过sp_help系统存储过程,可以了解触发器的一般信息(名字、属性、类型、创建时间等)。 通过sp_helptext能够查看触发器的定义信息。 通过sp_depends能够查看指定触发器所引用的表或指定的表涉及的所有触发器。 8.2 触发器触发器 注意注意:用户必须在当前数据库中查看触发器的信息,而且被查看的触发器必须已经被创建。和存储过程的加密类似,用户也可以在创建触发器时,通过指定WITH ENCRYPTION来对触发器的定义文本信息进行加密,加密后的触发器无法用sp_helptext来查看相

40、关信息。 用户还可以通过使用系统存储过程sp_helptrigger来查看某张特定表上存在的触发器的某些相关信息。具体命令的语法如下:EXEC sp_helptrigger table_name 8.2 触发器触发器 【例8-13】使用系统存储过程sp_helptrigger查看表student上存在的所有触发器的相关信息。在“查询分析器”的查询窗口中执行下面的语句:USE student_msGOEXEC sp_helptrigger studentGO 8.2 触发器触发器 8.2.58.2.5修改触发器修改触发器 通过系统存储过程、企业管理器或Transact-SQL语句,可以修改触发器的名字和正文。1.使用sp_rename系统存储过程修改触发器的名字,其语法格式为:sp_rename old_name, new_name其中,old_name为触发器原来的

温馨提示

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

评论

0/150

提交评论