麦档网
全部分类
  • 幼儿/小学教育 >
    幼儿/小学教育
    教育管理 学习方法 小学学案 小学教育 小学考试 幼儿教育 爱心教育 小学课件 课外知识 其它幼小文档
  • 中学教育 >
    中学教育
    高中教育 中学试题 初中教育 竞赛题 教学研究 中学学案 中学课件 职业教育 中考 高考英语 中学作文 体育理论与教学 高考 中学实验 音乐美术 其它中学文档
  • 高等教育 >
    高等教育
    工学 理学 历史学 农学 哲学 习题/试题 科普读物 大学课件 研究生课件 思想政治 专业基础教材 生物学 语言学 教育学 微积分 统计学 实验设计 其它高等教育文档
  • 论文 >
    论文
    管理论文 社科论文 文学论文 开题报告 经济论文 法律论文 医学论文 哲学论文 艺术论文 论文指导/设计 通讯论文 自然科学论文 大学论文 毕业论文 期刊/会议论文 其它论文
  • 研究生考试 >
    研究生考试
    考研政治 考研数学 考研英语 法律硕士 MBA/MPA 专业课 综合 辅导咨询 研究生其它文档
  • 资格/认证考试 >
    资格/认证考试
    公务员考试 专升本考试 成考 自考 教师资格考试 司法考试 微软认证 思科认证 注册会计师 全国翻译资格认证 医师/药师资格考试 会计职称考试 报关员资格考试 人力资源管理师 安全工程师考试 出国培训 资产评估师考试 技工类职业技能考试 银行从业资格 计算机等级考试 营养师认证 物流师考试 证券从业资格考试 注册税务师 理财规划师 建筑师考试 质量管理体系认证 建造师考试 其它考试文档
  • 办公文档 >
    办公文档
    调研文书 事务文书 规章制度 活动策划 股份制文书 统计图表 办公软件应用 解决方案 PPT模板素材 简明教程 工作计划 往来文书 工作总结 传真信函 会议纪要 产品手册 课程设计 教育范文 通知/申请 求职简历 说明文书 演讲致辞 词典 其它办公文档
  • 建筑/环境 >
    建筑/环境
    防腐 保温 环境科学 环保行业 建筑科学 建筑节能 保温建筑 防水建筑 防火建筑 装饰装潢 工程监理 工程造价 安全文明施工 岩土与地质勘察 建筑规划 给排水/暖通与智能 建筑图纸/图片/标牌 房地产 建筑机械 建筑制度 智能建筑 建筑论文 建筑材料 工程英语 公路与桥梁 市政工程 绿化工程 园林工程 古建工程 修缮加固与改造 人防工程 建筑QC 建筑资料 桩基础 钢结构 建筑贯标ISO 施工组织 设计及方案 建筑设计 建筑图集 水利工程 建筑规范 结构设计 建筑材料生产技术 建材标准 铁路工程 测绘 招标文件 电气安装工程 建筑环境其它文档
  • 生活休闲 >
    生活休闲
    星座运势宗教风水 社会民生 美容塑身 手工制作 娱乐时尚 充电交流 滑稽幽默 网络生活 科普知识 时政新闻 彩票 服装配饰 家居装修 美食烹饪 户外运动 婚嫁育儿 琴棋书画 两性情感 游戏攻略 武术 期刊/杂志 保健养生 宠物 摄影摄像 生活休闲其它文档
  • 行业资料 >
    行业资料
    家电行业 造纸印刷 纺织服装 食品饮料 酒店餐饮 物流与供应链 展会 生活用品 航海/船舶 传媒 水产/渔业 畜牧 公共安全/安全评价 林业 园艺 农作物 化学工业 国内外标准规范 轻工业/手工业 零售业 水利工程 日用品 农业工程 系统集成 冶金工业 金属学与金属工艺 社会学 武器工业 能源与动力工程 原子能技术 实验 家居行业 文化创意 船工业技术 航空/航天 石油、天然气工业 矿业工程 交通运输 旅游娱乐 室内设计 工业设计 行业其它文档
  • 管理/人力资源 >
    管理/人力资源
    宣传企划 企业文档 公司方案 商业合同 财务报表 励志书籍工具 经营企划 质量管理 物业管理 绩效管理 薪酬管理 销售管理 代理连锁 工程管理 信息管理 管理学资料 咨询培训 资本运营 企业信息化 市场营销 广告经营 劳动就业 项目管理 营销创新 劳动合同 商务礼仪 招聘面试 人事档案 员工关系 创业 企业文化 其它管理文档
  • 投标方案 >
    投标方案
    招标文件 工程建筑标书 交通运输标书 环保绿化标书 医疗卫生标书 仪器仪表标书 水利水电标书 能源化工标书 弱电安防标书 办公文教标书 通讯电子标书 机械设备标书 农林牧渔标书 其它标书
  • 换一换
    首页 麦档网 > 资源分类 > PPTX文档下载
     

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

    • 资源ID:1772       资源大小:426.26KB        全文页数:33页
    • 资源格式: PPTX        下载权限:游客/注册会员/VIP会员    下载费用:10金币 【人民币10元】
    快捷注册下载 游客一键下载
    会员登录下载
    三方登录下载: 微信快捷登录 QQ登录   微博登录  
    下载资源需要10金币 【人民币10元】
    邮箱/手机:
    温馨提示:
    支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

    模块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] AS sql_statement [ n2 ],,一 、T-SQL语句执行存储过程 存储过程创建完后,要产生效果,必须执行。在SQL Server 2008中创建执行存储过程当需要执行存储过程时,可以使用T-SQL语句CUTE。如果存储过程是批处理中的第一条语句,那么不使用CUTE关键字也可以执行该存储过程,其语法格式如下 cute a stored procedure or function [ { | CUTE}] { [ return_status ] { module_name [;number] | module_name_var } [[parameter] { value | variable [OUTPUT ] | [ DEFAULT ] ][,n] [ WITH RECOMPILE] } [;],,二、 使用SSMS执行存储过程 除了使用C语句执行存储过程,使用SSMS图形工具界面也可以来执行存储过程。,,一 、指定默认参数 在存储过程中,参数可以用来向存储过程中输入值,也可以从存储过程中输出值。下而将介绍在存储过程中使用参数的内容。 在创建存储过程时,可以通过为参数指定默认值,而创建一个带有可选参数的存储过程。在执行该存储过程中,如果不传递该参数,则使用默认值。 如果在创建存储过程时没有为参数指定默认值,并且在调用该存储过程的程序中也没有为该参数提供值,那么系统会返回错误信息。因此指定参数的默认值是有必要的。 二 、指定参数方向 当调用程序执行存储过程时,所有过程参数都可以接收输入值。如果在存储过程中为某个参数指定OUTPUT选项,则存储过程将在执行完毕退出时向调用程序返回该参数的当前值。调用程序在调用该存储过程时,也必须使用OUTPUT关键字指定相对应的实参,并且该实参必须是一个变量而不能是一个常量,这样才能将该参数的返回值保存到变量中以便在调用程序中使用。,,三 、使用RETURN语句 RETURN语句用于退出存储过程,返回到调用程序继续执行。在【例9-5】中已经看到了RETURN语句的使用,它是一个常用的使用RETURN语句返回分支的例子。可以看到,当存储过程遇到RETURN语句后立即返回,而后续的语句将不被执行。 在存储过程中可以使用RETURN语句返回一个被称为返回代码的整数值,以表明存储过程的状态。通常来说,返回0值代表成功,非0值代表失败。RETURN不能返回空值null,如果某个过程试图返回空值例如,使用RETURNstatus,而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 REPLICATION AS sql_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语句。 在视图中使用触发器。因为AFIER触发器不能在视图中使用,如果想在视图中使用触发器,就只能用INSERT OF触发器。 用自己的方式去修改数据。如果不满意使用SQL语句直接修改数据的方式,可以用 INSERT OF触发器来控制数据的修改方式和流程。,,触发器的定义和属性,修改触发器可以使用SSMS和T-SQL语句两种方式。 一、 使用SSMS修改触发器 使用SSMS修改触发器和创建触发器很类似。只要在“对象资源管理器”中找到所要修改的触发器并右击,在弹出的快捷菜单中选择“修改M”命令,出现“修改触发器”的模板界面,在代码区中修改好触发器的内容,最后单击工具栏中的“执行”按钮,即可完成对触发器的修改。 二 、使用T-SQL语句修改触发器 除了使用SSMS外,还可以使用ALTER TRRIGER语句修改存储过程,但该语句不会更改权限,也不影响相关的存储过程。其语法格式如下 ALTER TRIGGER trigger_name ON (table | view) [ WITH ENCRYPTION] { FOR | AFTER | INSTEAD OF { [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] [ NOT FOR REPLICATION] AS sql_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 StudentInfo GO DROP TRIGGER delStuBackup /*删除触发器*/ GO,,当不再需要某个触发器时,可将其关闭,关闭触发器不会删除该触发器。该触发器仍然作为对象存在于当前数据库中。但是,当执行任意lNSERT、UPDATE或DELETE语句(在其上对触发器进行了编程)时,触发器将不会激发。已关闭的触发器可以被重新启用。启用触发器会以最初创建它时的方式将其激发。默认情况下,创建触发器后会自动启用触发器。 关闭触发器有两种方法 一种是通过SSMS,其步骤与使用SSMS修改触发器类似,只是在弹出的快捷菜单中选择“禁用”命令,如启用触发器,则选择“启用”命令。 另一种方法是使用T-SQL的ALTER TABLE语句,其语法格式如下 ALTER TABLE数据表名 DISABLErIRIGGER触发器名 或 ENABLE TRIGGER触发器名 Disable关键字是关闭触发器,Enable关键字是启用触发器,如要关闭或启用所有的触发器,使用参数ALL代替所有的触发器。,谢谢欣赏,数据库原理与应用,

    注意事项

    本文(模块9--存储过程和触发器.pptx)为本站会员(佳佳)主动上传,麦档网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读麦档网的“版权提示”【网址:https://www.maidoc.com/h-34.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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

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


    收起
    展开