触发器事务自定义函数_第1页
触发器事务自定义函数_第2页
触发器事务自定义函数_第3页
触发器事务自定义函数_第4页
触发器事务自定义函数_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、 触发器是在对表进行插入、更新或删除触发器是在对表进行插入、更新或删除操作时自动执行的操作时自动执行的存储过程存储过程 触发器可以确保数据的完整性和一致性触发器可以确保数据的完整性和一致性 触发器可以通过企业管理器或者查询分析器来创建。触发器可以通过企业管理器或者查询分析器来创建。 语法语法:CREATE TRIGGER 触发触发器名器名称称ON 表表/视图视图-触发器表或触发器视图触发器表或触发器视图WITH ENCRYPTIONFOR DELETE, INSERT, UPDATEAS T-Sql语语句句触发器触发器可以与对可以与对表表执行的三个操作(执行的三个操作(INSERT、 UPDA

2、TE 和和 DELETE)相关联相关联触发器可以引用视图或临时表,触发器可以引用视图或临时表, 一个触发器一个触发器只只应应用于单用于单独一个独一个表表或视图或视图 WITH ENCRYPTION选项可用于对用户隐藏触发器选项可用于对用户隐藏触发器 的的定义。但是,加密定义。但是,加密的的触发器触发器无法进行无法进行解密解密触发器可以包含任意数触发器可以包含任意数量量的的 SQL SQL 语句语句默认情况下,只有数据库所有者才默认情况下,只有数据库所有者才具有具有创建创建触发器触发器的权限的权限。此此权限不可权限不可转让转让。触发器只能在当前数据库中创建。触发器只能在当前数据库中创建。 但是,

3、但是,触发器可以引用其他数据库触发器可以引用其他数据库中的中的对象。对象。触发器触发器可以可以访问两个逻辑表访问两个逻辑表- Inserted表表- Deleted表表 Inserted 和和Deleted 表表包含包含更新前和更新前和更新后的更新后的数据映像数据映像 Inserted和和Deleted表中不表中不包含表中不受包含表中不受更新操更新操作作 影响的数据影响的数据insert触发器触发器update触发器触发器delete触发器触发器当当试图向试图向表中表中插入数据插入数据时,时,将执行将执行 INSERT INSERT 触发器触发器 INSERT 触发器执行下列操作:触发器执行下

4、列操作:向向Inserted表中插入一个新行表中插入一个新行的的副本。副本。检查检查Inserted 表中的新行,确定是否要阻止该表中的新行,确定是否要阻止该插入操作。插入操作。如果如果所所插入插入的的行中的值是行中的值是有效有效的,的,则则将该行插将该行插入到触发入到触发器器表中。表中。当当试图试图从表中删除数据时,从表中删除数据时,将执行将执行DELETE 触发器。触发器。 DELETE触发器执行下列操作:触发器执行下列操作:从触发从触发器器表中删除行。表中删除行。将删除将删除的的行插入行插入到到Deleted表中。表中。检查检查Deleted表中的行,以确定是否需要表中的行,以确定是否需

5、要或应如何执行触发器操作。或应如何执行触发器操作。当当试图试图更新表中的数据时,更新表中的数据时,将执行将执行UPDATE触发器触发器 UPDATE 触发器执行下列操作:触发器执行下列操作:将原始数据行移到逻辑将原始数据行移到逻辑Deleted表中表中将一个新行插入将一个新行插入Inserted表表中,然后插入中,然后插入触发触发器器表中表中计算计算Deleted表和表和Inserted表中的值以确定是否需表中的值以确定是否需要进行干预要进行干预CREATE TRIGGER update_trigger1ON goodsFOR UPDATE AS/*检查商品编号列或商品类型编号列是否被修改,如

6、果有某些列被修改了,则取消修改操作*/IF UPDATE(goods_id) OR UPDATE(goods_type_id)BEGINPRINT 违背数据的一致性ROLLBACK TRANSACTIONENDGO例:在例:在shop数据库的数据库的goods表上创建一个表上创建一个UPDATE触发器,若对触发器,若对商品编号列或商品编号列或商品类型编号列商品类型编号列修改,则给出提示信息,并取消修改操作。修改,则给出提示信息,并取消修改操作。IF EXISTS (SELECT name FROM sysobjects WHERE name = reminder AND type = TR)D

7、ROP TRIGGER reminderGOCREATE TRIGGER reminder ON goodsFOR INSERT, UPDATE ,deleteASBEGINDECLARE str char(50)SET str=TRIGGER IS WORKINGPRINT strENDGO例:对于例:对于shop数据库,如果在数据库,如果在goods表中添加或更改数据,表中添加或更改数据,则向客户端显示一条则向客户端显示一条“TRIGGER IS WORKING”的信息。的信息。SQL 语句语句CREATE DATABASEALTER DATABASEDROP DATABASELOAD D

8、ATABASERECONFIGURERESTORE LOGDISK INITDISK RESIZELOAD LOGRESTORE DATABASE1创建触发器(1)通过界面方式只能创建DML触发器。以在表XS上创建触发器为例,利用“对象资源管理器”创建DML触发器步骤如下:启动“SQL Server Management Studio”,在“对象资源管理器”中展开“数据库”“XSBOOK”“表”“dbo.XS”选择其中的“触发器”目录,在该目录下可以看到之前已经创建的XS表的触发器。右击“触发器”,在弹出的快捷菜单中选择“新建触发器”菜单项。在打开的“触发器脚本编辑”窗口输入相应的创建触发器的

9、命令。输入完成后,单击“执行”按钮,若执行成功,则触发器创建完成。(2)查看DDL触发器。DDL触发器不可以使用界面方式创建,DDL触发器分为数据库触发器和服务器触发器,展开“数据库”“XSBOOK”“可编程性”“数据库触发器”就可以查看到有哪些数据库触发器。展开“数据库”“服务器对象”“触发器”就可以查看到有哪些服务器触发器。2修改触发器DML触发器能够使用界面方式修改,DDL触发器则不可以。进入“对象资源管理器”,修改触发器的步骤与创建的步骤相同,在“对象资源管理器”中选择要修改的“触发器”,右击鼠标,在弹出的快捷菜单中选择“修改”菜单项,打开“触发器脚本编辑”窗口,在该窗口中可以进行触发

10、器的修改,修改后单击“执行”按钮重新执行即可。但是被设置成“WITH ENCRYPTION”的触发器是不能被修改的。3删除触发器(1)删除DML触发器。以XS表的DML触发器为例,在“对象资源管理器”中展开“数据库”“XSBOOK”“表”“dbo.XS”“触发器”选择要删除的触发器名称,右击鼠标,在弹出的快捷菜单中选择“删除”菜单项,在弹出的“删除对象”窗口中单击“确定”按钮,即可完成触发器的删除操作。(2)删除DDL触发器。删除DDL触发器与删除DML触发器的方法类似,首先找到要删除的触发器,右击鼠标,选择“删除”选项即可。 事务是指一个单元的工作事务是指一个单元的工作 事务具有四个属性:原

11、子性、一致性、事务具有四个属性:原子性、一致性、隔离性、耐久性隔离性、耐久性BiginBigin transaction transaction 语句语句1 1 语句语句2 2If(If(成功成功) ) commit transactionElse rollback transactionCREATE FUNCTION 函数名称函数名称(参数名称参数名称 数据类型数据类型,nn)RETURNS 返回值的数据类型返回值的数据类型ASBEGIN函数内容函数内容RETURN 返回的数据返回的数据表达式表达式END 本章首页本章首页调用用户自定义函数的基本语法为:调用用户自定义函数的基本语法为:变量变量=用户名用户名.函数名称(实际参数列表)函数名称(实际参数列表)注意:在调用返回数值的用户自定义函注意:在调用返回数值的用户自定义函数时,一定要在函数名称的前面加上用数时,一定要在函数名称的前面加上用户名户名 调用用户自定义函数调用用户自定义函数创建函数创建函数CREATE FUNCTION udf_age

温馨提示

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

最新文档

评论

0/150

提交评论