SQLServer-触发器使用实例.docx_第1页
SQLServer-触发器使用实例.docx_第2页
SQLServer-触发器使用实例.docx_第3页
SQLServer-触发器使用实例.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

SQLServer 触发器使用实例触发器是一个特殊的存储过程。常见的有三种:分别应用于Insert , Update , Delete 事件。一、Trigger语法:create trigger tr_nameon table/viewfor | after | instead of update,insert,deletewith encryptionas batch | if update (col_name) and|or update (col_name) 说明:1 tr_name :名称2 on table/view :触发器所作用的表。一个触发器只能作用于一个表3 for 和after :同义4 after 与instead of :sql 2000新增项目afrer 与 instead of 的区别After在触发事件发生以后才被激活,只可以建立在表上Instead of代替了相应的触发事件而被执行,既可以建立在表上也可以建立在视图上5 insert、update、delete:激活触发器的三种操作,可以同时执行,也可选其一6 if update (col_name):表明所作的操作对指定列是否有影响,有影响,则激活触发器。此外,因为delete 操作只对行有影响,所以如果使用delete操作就不能用这条语句了(虽然使用也不出错,但是不能激活触发器,没意义)。7 触发器执行时用到的两个特殊表:deleted ,inserteddeleted 和inserted 可以说是一种特殊的临时表,是在进行激活触发器时由系统自动生成的,其结构与触发器作用的表结构是一样的,只是存放 的数据有差异。二、实例:实例1(注意这里的关联,条件是如何关联,update中set的值是与谁关联。这些都可以从【触发器的两个临时表:inserted、deleted】中得到答案)比如,这么两个表:Create Table Student( -学生表StudentID int primary key, -学号StudentName varchar(50),姓名)Create Table BorrowRecord( -学生借书记录表BorrowRecord int identity(1,1), -流水号StudentID int , -学号BorrowDate datetime, -借出时间ReturnDAte Datetime, -归还时间.)用到的功能有:1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。等等。这时候可以用到触发器。对于1,创建一个Update触发器:Create Trigger truStudentOn Student -在Student表中创建触发器for Update -为什么事件触发As -事件触发后所要做的事情if Update(StudentID)beginUpdate BorrowRecordSet StudentID=i.StudentIDFrom BorrowRecord br , Deleted d ,Inserted i-Deleted和Inserted临时表Where br.StudentID=d.StudentIDend理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。 一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是: |虚拟表Inserted | 虚拟表Deleted在表记录新增时 |存放新增的记录 | 不存储记录修改时 |存放用来更新的新记录 | 存放更新前的记录删除时 |不存储记录| 存放被删除的记录一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。对于2,创建一个Delete触发器Create trigger trdStudentOn Studentfor DeleteAsDelete BorrowRecordFrom BorrowRecord br , Delted dWhere br.StudentID=d.StudentID对于3,创建一个Insert触发器create Trigger testdbon myStudentfor insertasbegininsert into BorrowRecord(St

温馨提示

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

评论

0/150

提交评论