• / 33
  • 下载费用:10 金币  

模块9--存储过程和触发器.pptx

关 键 词:
模块 存储 过程 触发器
资源描述:
项目目标, 掌握存储过程的概念、类型掌握存储过程创建、修改、执行掌握触发器的概念、类型、操作方法,模块9 存储过程和触发器,01,02,任务3 执行存储过程,任务1 存储过程,任务 2 创建存储过程,03,,实训项目,任务4 存储过程参数和返回值,04,任务5 修改存储过程,05,任务6 删除存储过程,06,任务7 触发器,07,任务8 创建触发器,08,任务9 修改触发器,09,任务10 删除触发器,10,11,任务11 关闭和启用触发器,,一、 存储过程概述在开发SQL Server应用程序过程中,T-SQL语句是应用程序与SQL Server数据库之间使用的主要编译接口。应用程序与SQL Server数据库交互执行某些操作有两种方法:一种是存储在本地的应用程序中记录操作命令,应用程序向SQL Server发送每一个命令,并对返回的数据进行处理:另一种是在SQL Server中定义某个过程,其中记录了一系列的操作,每次应用程序只需调用该过程就可以完成操作。这种在SQL Server中定义的过程被称为存储过程。存储过程是一组T-SQL语句的集合,它类似于函数,具有模块化的优点。在T-SQL语句的编写过程中,如果只有几百条语句则很容易查看阅读,可以不用对这些语句进行模块化,但如果有成千上万条语句,如果不采用存储过程,则是非常难以阅读的。例如,有一些算法,如某公司的计算工资的算法,如果不采用存储过程,则每次计算工资时需要重写算法语句,难免不出差错。另外,还有许许多多使用到存储过程的场合,可以说,存储过程是T-SQL语句的骨架。,,一、 存储过程概述SQL Server中的存储过程与其他语言中的过程(或函数>类似,它们有一些共同的特征,如它们都接受输入参数,并向调用程序或语句返回值。它们都包含执行操作或调用其他过程的编程语句。可以向调用程序返回状态值,指示执行过程是否成功。相对直接使用T-SQL语句来说,存储过程具有如下优点:(1)存储过程可以模块化程序。通过嵌套的存储过程的调用,可以建立起程序调用的层次关系,使程序结构更加清晰。(2) 一个存储过程可执行多个T-SQL语句,使得许多需要重复使用的语句不必重复出现,取而代之的则是存储过程。(3)存储过程可以提升T-SQL程序的执行效率。因为存储过程在最初创建时编译,在使用时已经是使用目标代码了。,,二 、存储过程的类型在SQL Server 2008中有5种存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。1.系统存储过程SQL Server提供了一些预编译的存储过程,用以管理SQL Server和显示有关数据库与用户信息。这些存储过程称为系统存储过程。系统存储过程充当从系统表中检索信息的快捷方式。通过配置SQL Server,可以生成对象、用户和权限的信息和定义,这些信息和定义存储在系统表中。每个数据库都有一个包含配置信息的系统表集。这些系统表是在创建数据库时自动创建的。用户可以通过系统存储过程访问和更新这些系统表。所有系统存储过程的名称都以sp_开始。系统存储过程位于master数据库中。系统管理员拥有这些存储过程。可以在任何数据库中运行系统存储过程,但执行结果会反映在当前数据库中。,,二 、存储过程的类型系统存储过程可以归纳为若干类。下面是几个常用的类别:数据库引擎存储过程:用于SQL Server数据库引擎的常规维护。分布式查询存储过程:用于实现和管理分布式查询。分布式查询可以从多个数据源检索数据。这些数据源可以包含一个或多个SQL Server数据库。游标存储过程:用于实现游标变量功能。复制存储过程:用于管理复制,包括复制表的架构和数据。安全性存储过程:用于管理数据库安全性。SQL Server代理存储过程:由SQL Server代理用于管理计划的活动和事件驱动活动。XML存储过程:用于XML文本管理。常规扩展存储过程:提供从SQL Server实例到外部程序的接口,以便进行各种维 护活。,,二 、存储过程的类型2.本地存储过程本地存储过程又称为“用户自定义存储过程”,它是创建在用户自己数据库中的存储过程,这种存储过程是用户创建的普通存储过程,没有前缀sp_。在SQL Server 2008中,用户存储过程可以使用T-SQL语言编写,也可以使用CLR方式编写。在本书中,主要介绍使用T-SQL语言编写的本地存储过程。3.临时存储过程临时存储过程是一种特殊的本地存储过程。如果在本地存储过程前面有一个“#”,这种存储过程称为局部临时存储过程,只能在一个用户会话中使用。如果在本地存储过程前面有一个“##”,这种存储过程称为全局临时存储过程,可以在所有用户会话中使用。,,二 、存储过程的类型4.远程存储过程远程存储过程是指保存在远程服务器上的存储过程,也就是非本地服务器上的存储过程。5.扩展存储过程扩展存储过程指的是SQL Server环境外执行的DDL动态连接库,前缀为xp_。,,在SQL Server 2008中,创建一个存储过程有两种方法:一是使用T-SQL语句CREATEPROCEDURE,二是使用SSMS图形工具界面。一、 使用T-SQL创建存储过程创建存储过程需要用CREATE PR。CEDURE语句,在学习具体的创建方法之前,先来了解一下创建T-SQL存储过程的规则。(1)在设计和创建存储过程时,应该满足一定的约束和规则。只有满足了这些约束和规则才能创建有效的存储过程。(2) CREATE PROCEDURE定义自身可以包括任意数量和类型的T-SQL语句,但下列语句除外:CREATE AGGREGATE、CREATE SCHEMA、CREATE DEFAULE、CREATE RULE、CREATE或ALTER PROCEDURE、CREATE或ALTER TRIGGER、CREATE或ALTERVIEW、CREATE或ALTER FUNCTION、SET PARSEONLY、SET SHOWPLAN_ALL、SET SHOWPLAN_TEXT、SET SHOWPLAN_XML和USE database_nake。(3)可以引用在同一存储过程中创建的对象,只要引用时已经创建了该对象即可。(4)可以在存储过程内引用临时表。,,一、 使用T-SQL创建存储过程(5)如果在存储过程内创建本地临时表,则临时表仅为该存储过程而存在;退出该存储过程后,临时表将消失。(6)如果执行的存储过程将调用另一个存储过程,则被调用的存储过程可以访问由第一个存储过程创建的所有对象,包括临时表在内。(7)如果执行对远程SQL Server 2008实例进行更改的远程存储过程,则不能回滚这些更改,而且远程存储过程不参与事务处理。(8)存储过程中的参数的最大数目为2100。(9)存储过程中的局部变量的最大数目仅受可用内存的限制。(10)根据可用内存的不同,存储过程最大可达128MB。使用CREATE PROCEDURE语句创建存储过程的语法格式如下:CREATE PROCEDURE [EDURE ] procedure_name [; number][ { @parameter data_type } [= default ] [OUTPUT] ][,…n1][WITH { RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION } ] [FOR REPLICATION]ASsql_statement [ … n2 ],,一 、T-SQL语句执行存储过程存储过程创建完后,要产生效果,必须执行。在SQL Server 2008中创建执行存储过程当需要执行存储过程时,可以使用T-SQL语句EXECUTE。如果存储过程是批处理中的第一条语句,那么不使用EXECUTE关键字也可以执行该存储过程,其语法格式如下: Execute a stored procedure or function [ { EXE | EXECUTE)}] { [ @return_status= ] { module_name [;number] | @module_name_var } [[@parameter=] { value | @variable [OUTPUT ] | [ DEFAULT ] ][,…n] [ WITH RECOMPILE] } [;],,二、 使用SSMS执行存储过程除了使用EXEC语句执行存储过程,使用SSMS图形工具界面也可以来执行存储过程。,,一 、指定默认参数在存储过程中,参数可以用来向存储过程中输入值,也可以从存储过程中输出值。下而将介绍在存储过程中使用参数的内容。在创建存储过程时,可以通过为参数指定默认值,而创建一个带有可选参数的存储过程。在执行该存储过程中,如果不传递该参数,则使用默认值。如果在创建存储过程时没有为参数指定默认值,并且在调用该存储过程的程序中也没有为该参数提供值,那么系统会返回错误信息。因此指定参数的默认值是有必要的。二 、指定参数方向当调用程序执行存储过程时,所有过程参数都可以接收输入值。如果在存储过程中为某个参数指定OUTPUT选项,则存储过程将在执行完毕退出时向调用程序返回该参数的当前值。调用程序在调用该存储过程时,也必须使用OUTPUT关键字指定相对应的实参,并且该实参必须是一个变量而不能是一个常量,这样才能将该参数的返回值保存到变量中以便在调用程序中使用。,,三 、使用RETURN语句RETURN语句用于退出存储过程,返回到调用程序继续执行。在【例9-5】中已经看到了RETURN语句的使用,它是一个常用的使用RETURN语句返回分支的例子。可以看到,当存储过程遇到RETURN语句后立即返回,而后续的语句将不被执行。在存储过程中可以使用RETURN语句返回一个被称为返回代码的整数值,以表明存储过程的状态。通常来说,返回0值代表成功,非0值代表失败。RETURN不能返回空值(null),如果某个过程试图返回空值(例如,使用[email protected],而@status为NULL),则将生成警告消息并返回O值。调用程序在执行存储过程时,与OUTPUT参数一样,必须将返回代码保存到一个变量中,以便在调用程序中查看和使用该返回代码值。,,一 、在SSMS中修改存储过程存储过程是一段T-SQL代码,在使用过程中,如果它无法满足业务需要,就要对存储过程进行修改,修改存储过程通常指编辑它的参数和SQL语句。修改存储过程可以通过SSMS和T-SQL语句两种方式。在SSMS中修改存储过程和创建存储过程有些类似。只要在“对象资源管理器”中找到所要修改的存储过程右击,在弹出的快捷菜单中选择“修改(Y)”命令,出现“修改存储过程”的模板界面,在代码区中修改好存储过程的内容,最后单击工具栏中的“执行”按钮,即可完成对存储过程的修改。,,、使用T-SQL语句修改存储过程除了使用SSMS外,还可以使用ALTER PROCEDURE语句修改存储过程,但该语句不会更改权限,也不影响相关的存储过程。其语法格式如下:ALTER PROC [ EDURE ] procedure_name [;number][ { @parameter data_type}[ VARYING] [=default] [OUTPUT]] [,…n][ WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}][ FOR REPLICATIONASsql_statement [, . . .n]ALTER PROCEDURE语句中各参数的含义与CREATE PROCEDURE的参数类似,这里不详细讲解。,,当不再使用一个存储过程时,就要把它从数据库中删除。SQL Server 2008提供两种删除存储过程的方法:一种是使用SSMS,另一种是使用T-SQL语句。一 、 使用SSMS删除存储过程SSMS删除存储过程非常简单。在“对象资源管理器”中找到所要修改的存储过程右击,在弹出的快捷菜单中选择“删除(D)”命令,弹出“删除对象”对话框,单击“确定”按钮,即可完成存储过程的删除。二 、使用T-SQL语句删除存储过程T-SQL语言删除存储过程的语句是DROP PROCEDURE,其语法格式如下:DROP {PROC | PROCEDURE} { [schema_name. ] procedure} [,…n]语法参数的含义如下。Schema_name:存储过程所属架构的名称,不能指定服务器名称或数据库名称。Procedure:要删除的存储过程或存储过程组的名称。n:表示可以指定多个过程的占位符。,,SQL Server 2008提供了两种主要机制来强制执行业务规则和数据完整性:约束和触发器。触发器是一种特殊的存储过程,它在程序执行SQL查询语句时将自动生效。一 、触发器概述触发器与表紧密相连,可看做表格定义的一部分。触发器是在特定表上进行定义的,该表也称为触发器表。触发器不能被显式地调用,当有操作针对触发器表时,例如,在表中插入、删除、修改数据时,如果该表有相应操作类型的触发器,那么触发器就自动触发执行。使用触发器可实施更为复杂的数据完整性约束。触发器基于一个表创建,但是可以针对多个表进行操作,所以触发器常被用来实现复杂的商业规则。例如,在Student数据库中存放着学生信息,还存放着与学生关联的选课信息。现在,有一个学生的信息被删除了,则所有与该学生有关的选课信息都应该删除。这种涉及两张(或更多张)表的一致性维护问题,可以使用触发器来实现。在StudentInfo表上设置一个DELETE触发器,当删除一个学生信息时,触发器自动执行,对,,一 、触发器概述在SQL Server 2008中,一张表可以有多个触发器。用户可以针对INSERT、UPDATE或DELETE语句分别设置触发器,也+町以针对一张表上的特定操作设置多个触发器。触发器里可以容纳非常复杂的T-SQL语句。但是,不管触发器所进行的操作有多复杂,触发器都只作为一个独立的单元被执行,同时也被看做一个事务。如果在执行触发器的过程中发生错误,则整个事务将会被自动回滚。触发器和存储过程是有区别的:存储过程是在数据库上定义的,而触发器是在特定表上进行定义的;存储过程可以由用户直接调用执行,但触发器不能直接调用执行,而是SQLServer自动触发执行的,并且触发器不允许带参数。,,一 、触发器概述使用触发器可以实现对数据库中相关表的级联修改,完成比CHECK约束更为复杂的限制等操作。下面是触发器的一些明显优点。触发器是自动的。它们在对表的数据作了任何修改(例如手工输入或者应用程序采取的操作)之后立即被激活。触发器可以通过数据库中的相关表进行级联修改。触发器可以强制限制。这些限制比用CHECK约束所定义的限制更复杂。与CHECK 约束不同的是,触发器可以引用其他表中的列。使对表的修改符合规则。使用触发器在修改表数据时,一个表中数据发生变化,则另一个表中的数据会做相应的变化,如果对数据的修改不符合条件,则修改数据会遭受失败。虽然触发器的功能很强大,但也要谨慎使用,因为每次访问表时都可能激活某个触发器,这样会给数据库带来负担,所以,尽量用触发器执行别的方法不能执行的操作,例如,如果可以使用约束处理某个触发器的事情,就使用约束而不要使用触发器。另外,有一些SQL语句不能在触发器中执行,如CREATE DATABASE、ALTERDATABASE、DROP DATABASE、LOAD DATABASE、RECONFIGURE、RESTORE LOG、DISK INIT、DISK RESIZE、LOAD LOG和RESTORE DATABASE。,,二 、触发器类型SQL Server 2008提供了:AFTER和INSTEAD OF两种触发器。这两种触发器的差别在于被激活的时机不同。1.AFTER触发器AFTER触发器在触发它们的语句和约束检查完成后执行。如果该语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。不能为视图指定AFrER触发器,只能为表指定该触发器。可以为每个触发操作(INSERT、UPDATE或DELETE)指定多个AFTER触发器。如果表有多个AFTER触发器,可使用sp_settriggerorder存储过程定义哪个AFTER触发器最先激发,哪个最后激发。除第一个和最后一个触发器外,所有其他的AFTER触发器的激发顺序不确定,并且无法控制。在SQL Server2008中AFTER是默认触发器。2.INSTEAD OF触发器INSTEAD OF触发器用于替代引起触发器执行的T-SQL语句,简单地讲就是,AFTER触发器是告诉T-SQL语句执行了INSERT、UPDATE或者DELETE操作后干什么(操作已经做了,数据已经变动了)。INSTEAD OF触发器是告诉当要执行INSERT、UPDATE或者DELETE操作时用什么别的操作来代替(操作不做,而是做另外一种触发器定义的操作)。可以在表和视图上指定INSTEAD OF触发器。在SQL Server 2008中,不能为每个触发操作(INSERT、UPDATE和DELETE)定义多个INSTEAD OF触发器。INSTEAD OF触发器在约束检查之前执行。,,三 、inserted:表和deleted:表在使用触发器过程中,SQL Server使用到了两个特殊的临时表:inserted表和deleted表。这是两个逻辑表,由系统来维护,不允许用户直接对这两个表进行修改。这两张表都存在与高速缓存中(如果内存不够用,也可能存储在硬盘上),实际上是事务日志的视图,它们与被该触发器作用的表的结构相同。触发器工作完成后,这两个表也会被删除。用户可以使用这两张临时表来检测某些修改操作所产生的效果。例如,可以使用SELECT语句来检查INSERT语句和UPDATE语句执行的插入操作是否成功,触发器被这些语句触发等。但是不允许用户直接修改inserted和deleted临时表中的数据。inserted和deleted表都是针对当前触发器的局部临时表,这些表只对应于当前触发器的基本表。如果在触发器中使用存储过程,或者是产生了嵌套触发器的情况,则不同的触发器将会使用属于自己基本表的inserted和deleted临时表。,,三 、inserted:表和deleted:表1.inserted表存储着被DELETE和UPDATE语句影响的新的数据行。当用户执行DELETE或UPDATE语句时,新的数据行被添加到inserted表中,同时这些数据行的备份被复制到inserted临时表中。2.deleted表存储着被DELETE和UPDATE语句影响的旧的数据行。在执行DELETE或UPDATE语句过程中,指定的数据行被用户从基表中删除,然后转移到了deleted表中。一般来说,在基表和deleted表中不会存在有相同的数据行。,,现在,我们对触发器有了一定的了解,接下来学习如何创建触发器。但在创建触发器之前,需要考虑以下一些注意事项。CRAETE TRIGGER语句必须是一个批处理中的第一条语句。创建触发器的权限默认是属于表的所有者的,而且不能再授权给他人。触发器是数据库对象,它的命名必须符合命名规则。只能在当前数据库中创建触发器,但触发器可以引用其他数据库的对象。触发器不能在临时表或系统表上创建,触发器中可引用临时表,但不能引用系统表。尽管TRUNCATE TABLE语句很像一个没有WHERE子句的DELETE语句(二者都 是删除表中的所有行),但TRUNCATE TABLE的操作不被记入事务日志,所以它也不会激活DELETE触发器。WRITETEXT语句不会激活INSERT或UPDATE触发器。,,现在,我们对触发器有了一定的了解,接下来学习如何创建触发器。但在创建触发器之前,需要考虑以下一些注意事项。如果指定触发器所有者名限定触发器,要以相同的方式限定表名。在同一个CRAETE TRIGGER语句中,可以为多种操作定义相同的触发器操作。如果一个表的外键在DELETE、UPDATE操作上定义了级联,则不能在该表上定义INSTEAD OF DELETE、INSTEAD OF UPDATE触发器。在触发器内可以指定任意的SET语句,所选择的SET选项在触发器执行期间有效,并在触发器执行完后恢复到以前的设置。触发器不能返回任何结果,为了阻止从触发器返回结果,不在触发器定义中包含SELECT语句或变量赋值。如果必须在触发器中进行变量赋值,则应该在触发器的开头使用SET NOCOUNT语句,以免返回任何结果集。创建触发器可以使用SSMS来完成,也可以使用T-SQL语句来完成。,,一、 使用T-SQL语句创建触发器创建触发器的T-SQL语句是CREATE TRIGGER,其语法格式如下: Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)CREATE TRIGGER [ schema_name. ]trigger_name ON{table | view) [ WITH [,…n] ] { FOR | AFTER | INSTEAD OF} { [ INSERT] [ , ] [UPDATE] [ , ] [DELETE] }[ WITH APPEND][ NOT FOR REPLICATION ]AS { sql_statement [ ; ] […n ]二、使用SSMS创建触发器除了可以使用T-SQL语句创建触发器,还可以使用SSMS图形工具界面来创建触发器。,,三、INSERT触发器当向表中插入数据时,将执行INSERT触发器。INSERT触发器可以确保添加到表中的数据是有效的。要插入的数据先保存在inserted表,然后添加到触发器所依赖的表中。对于插入操作,由于没有删除数据,所以没有deleted表。当试图向表中插入数据时,INSERT触发器执行下列操作:(1)向inserted表中插入一个新行的副本。(2)检查inserted表中的新行是否有效,如果有效则插入表中,否则阻止该插入操作。可以通过检查inserted表中的数据,来确定是否需要或者该如何执行触发器操作。四、UPDATE触发器当对表执行更新操作时,将执行UPDATE触发器。当在表上执行更新操作时,UPDATE触发器会执行下列操作:(1)将原始数据行移动到deleted表中。(2)将一个新行先插入到inserted表中,然后再插入到触发器所依赖的表中。 可以创建UPDATE触发器来验证对整个表的更新,也可以创建UPDATE触发器对单个列的更新进行验证。,,五 、DELETE触发器当试图从表中删除数据行时,将执行DELETE触发器。在DELETE触发器操作中,由于不会将行插入到目标表中去,因此不会使用inserted表。当试图从表中删除数据行时,DELETE触发器会执行下列操作:(1)从触发器表中删除行。(2)将删除的行插入到deleted表中。可以通过检查deleted表中的数据,来确定是否需要或者该如何执行触发器操作。。,,六 、INSTEAD OF触发器INSTEAD OF触发器与AFTER触发器的工作流程是不一样的。AFTER触发器是在SQLServer服务器接到执行SQL语句请求之后,先建立临时的inserted表和deleted表,然后实际更改数据,最后才激发触发器的。而INSTEAD OF触发器看起来就简单多了,在SQL Server服务器接到执行SQL语句请求后,先建立临时的inserted表和deleted表,然后就触发了INSTEAD OF触发器,至于那个SQL语句是插入数据、更新数据还是删除数据,就一概不管了,把执行权全权交给了INSTEAD OF触发器,由它去完成之后的操作。INSTEAD OF触发器可以同时在数据表和视图中使用,通常在以下几种情况下,建议使用INSTEAD OF触发器。数据库里的数据禁止修改。例如电信部门的通话记录是不能修改的,一旦修改,则通话费用的计数将不正确。在这时就可以用INSTEAD OF触发器来跳过UPDATE修改记录的SQL语句。有级联关系的多表删除。有可能要回滚修改的SQL语句。在视图中使用触发器。因为AFI'ER触发器不能在视图中使用,如果想在视图中使用触发器,就只能用INSERT OF触发器。用自己的方式去修改数据。如果不满意使用SQL语句直接修改数据的方式,可以用 INSERT OF触发器来控制数据的修改方式和流程。,,触发器的定义和属性,修改触发器可以使用SSMS和T-SQL语句两种方式。一、 使用SSMS修改触发器使用SSMS修改触发器和创建触发器很类似。只要在“对象资源管理器”中找到所要修改的触发器并右击,在弹出的快捷菜单中选择“修改(M)”命令,出现“修改触发器”的模板界面,在代码区中修改好触发器的内容,最后单击工具栏中的“执行”按钮,即可完成对触发器的修改。二 、使用T-SQL语句修改触发器除了使用SSMS外,还可以使用ALTER TRRIGER语句修改存储过程,但该语句不会更改权限,也不影响相关的存储过程。其语法格式如下:ALTER TRIGGER trigger_nameON (table | view) [ WITH ENCRYPTION]{ ( FOR | AFTER | INSTEAD OF ) { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] [ NOT FOR REPLICATION]ASsql_statement […n ],,当不再需要某个触发器时,可以将它删除。触发器被删除时,触发器所在表中的数据不会因此改变。当某个表被删除时,该表上的所有触发器也自动被删除。SQL Server 2008提供两种删除触发器的方法:一种是使用SSMS,另一种是使用T-SQL语句。一、 使用SSMS删除触发器使用SSMS删除触发器非常简单。在“对象资源管理器”中找到所要修改的触发器右击,在弹出的快捷菜单中选择“删除(D)”命令,弹出“删除对象”对话框,单击“确定”按钮,即可完成触发器的删除。二、 使用T-SQL语句删除触发器T-SQL语言删除触发器的语句是DROP TRIGGER,其语法格式如下:DROP TRIGGER schema_name.trigger_name [ ,…n] [ ; ]【例9-17]删除deIStuBackup触发器USE StudentInfoGODROP TRIGGER delStuBackup /*删除触发器*/GO,,当不再需要某个触发器时,可将其关闭,关闭触发器不会删除该触发器。该触发器仍然作为对象存在于当前数据库中。但是,当执行任意lNSERT、UPDATE或DELETE语句(在其上对触发器进行了编程)时,触发器将不会激发。已关闭的触发器可以被重新启用。启用触发器会以最初创建它时的方式将其激发。默认情况下,创建触发器后会自动启用触发器。关闭触发器有两种方法:一种是通过SSMS,其步骤与使用SSMS修改触发器类似,只是在弹出的快捷菜单中选择“禁用”命令,如启用触发器,则选择“启用”命令。另一种方法是使用T-SQL的ALTER TABLE语句,其语法格式如下:ALTER TABLE数据表名DISABLErIRIGGER触发器名或ENABLE TRIGGER触发器名Disable关键字是关闭触发器,Enable关键字是启用触发器,如要关闭或启用所有的触发器,使用参数ALL代替所有的触发器。,谢谢欣赏,数据库原理与应用,
展开阅读全文
  麦档网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:模块9--存储过程和触发器.pptx
链接地址:https://www.maidoc.com/p-1772.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

[email protected] 2018-2020 maidoc.com版权所有  文库上传用户QQ群:3303921 

麦档网为“文档C2C模式”,即用户上传的文档所得金币直接给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的金币归上传人(含作者)所有。
备案号:蜀ICP备17040478号-3  
川公网安备:51019002001290号 

本站提供办公文档学习资料考试资料文档下载


收起
展开