当前位置:  数据库>sqlserver

sql server 触发器实例分享(1)

    来源: 互联网  发布时间:2014-08-29

    本文导语:  触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 下面介绍下为何要使用触发器? 比如,这么两个表:    代码示例: Create Table Student(    --学生表    StudentID int primary key,  --学...

触发器是一个特殊的存储过程。

常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

下面介绍下为何要使用触发器?
比如,这么两个表: 
 

代码示例:

Create Table Student(    --学生表
   StudentID int primary key,  --学号
   ....
  )

 Create Table BorrowRecord(     --学生借书记录表
   BorrowRecord   int identity(1,1),  --流水号  
   StudentID int ,     --学号
   BorrowDate     datetime,      --借出时间
   ReturnDAte     Datetime,      --归还时间
   ...
 )

用到的功能有:
1,如果更改了学生的学号,希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
2,如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。

此时可以考虑使用触发器。
对于1,创建一个Update触发器:
 

代码示例:

Create Trigger truStudent
  On Student     --在Student表中创建触发器
  for Update      --为什么事件触发
     As          --事件触发后所要做的事情
  if Update(StudentID) 
begin

  Update BorrowRecord
  Set StudentID=i.StudentID
  From BorrowRecord br , Deleted   d ,Inserted i --Deleted和Inserted临时表
  Where br.StudentID=d.StudentID
end  
 

理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息,分别是:
虚拟表Inserted      虚拟表Deleted

在表记录新增时     存放新增的记录     不存储记录
修改时      存放用来更新的新记录    存放更新前的记录
删除时      不存储记录         存放被删除的记录

一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

对于2,创建一个Delete触发器 
 

代码示例:
Create trigger trdStudent
  On Student
  for Delete
     As
  Delete BorrowRecord
    From BorrowRecord br , Delted d
    Where br.StudentID=d.StudentID

从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。


    
 
 

您可能感兴趣的文章:

  • sql server 触发器实例:特定字段更新时触发Update触发器
  • SQL Server 触发器 表的特定字段更新时,触发Update触发器
  • sql server 禁用与启用触发器的语句
  • SQL2000能不能够象Access2000那样自动编号?(用触发器行不行?如何做?)
  • MySQL与SQL的触发器的不同写法
  • 查看数据库中所有触发器的sql语句
  • SQL Server误区30日谈 第4天 DDL触发器就是INSTEAD OF触发器
  • sql server 触发器实例(判断是插入、删除,还是修改)
  • sql update 触发器 可获得被update的行的信息
  • sql server触发器的简单例子
  • Oracle创建主键自增表(sql语句实现)及触发器应用
  • 使用sql脚本创建触发器的例子
  • sql server跨服务器触发器的例子
  • ORACLE PL/SQL 触发器编程篇介绍
  • sql server添加、更新、删除触发器的例子
  • sql 触发器使用例子
  • sql不常用函数总结以及事务,增加,删除触发器
  • 简单触发器的使用 献给SQL初学者
  • sql server 触发器对数据库进行数据备份的例子
  • 用sql脚本创建sqlserver数据库触发器范例语句
  • sql server触发器学习总结及自动编号的例子
  • 在SQL触发器或存储过程中获取在程序登录的用户
  • SQL SERVER中各类触发器的完整语法及参数说明
  • SQL Server 创建触发器详解
  • SQL Server 2000中的触发器使用
  • 怎么查看SQL SERVER加密存储过程/函数/触发器与视图
  • SQL SERVER 触发器介绍
  • sql server 触发器实例分享(2)
  • SQL触发器实例讲解
  • Oracle PL/SQL 触发器(trigger)学习笔记
  • 学习Sql Server触发器的使用
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql语句实例 取得日志条目的sql语句
  • SQL分组排序去除重复实例
  • php防止sql注入代码实例
  • T-SQL实例 函数结果设置为列别名
  • 怎样不执行SELECT SQL语句即可获得ResultSetMetaData实例????
  • sql语句实例 统计一个特定页面中的相关链接
  • SQL分组排序去重复的小实例
  • sql语句实例 统计页面链接的sql语句
  • 教你怎么使用sql游标实例分享
  • mysqli多条sql语句查询实例
  • MSSQL中递归SQL查询语句实例说明-
  • sql语句not and or执行顺序(实例解析)
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • SQL语句练习实例之七 剔除不需要的记录行
  • SQL cursor用法实例
  • sql中获取分组排序后数据方法实例
  • sql条件查询语句的简单实例
  • sql语句like多个条件的写法实例
  • SQL自连接(self join)实例学习
  • T-SQL常用游标函数实例学习
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • sql server 禁用与启用触发器的语句 iis7站长之家
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3