设为首页
加入收藏
帮助中心
首页 | 红盾通告 | 信息中心 | ASP技术 | 数据库 | 网页设计 | 网管专栏 | OICQ攻略 | 墨客频道 | 网站运营 |
当前位置:首页 >> 数据库 >> SQL Server >> 正文
最新信息
·SQL2000做附加数据库时报:…
·数据库sql被挂马终极批量删…
·动网论坛全文索引建立帮助
·论坛不支持文章内容搜索的…
·打造抵御SQL注入攻击的MSS…
·10个保护SQL Server 2000安…
·sql server安全设置攻略
·SQL Server安全设置清单列…
·使用 SQL Server 时需要经…
·SQL中触发器实例讲解
资料搜索
热点信息
·如何压缩SQL Server 2000数…
·SQL中触发器实例讲解
·日志文件满而造成SQL数据库…
·10个保护SQL Server 2000安…
·使用 SQL Server 时需要经…
·SQL2000做附加数据库时报:…
·SQL SERVER的安全隐患:触…
·asp如何连接sql server并实…
·SQL Server不能启动的常见…
·一种简单的表中删除重复行…
推荐信息
·打造抵御SQL注入攻击的MSS…
·SQL Server数据库开发的二…
·Sqlserver 优化的方法
·SQLServer吞噬的内存解决办…
·SQL SERVER日志清除的两种…
·如何压缩SQL Server 2000数…
·SQL Server 2000 SP4发布
·动网论坛全文索引建立帮助
·10个保护SQL Server 2000安…
·SQL Server安全设置清单列…


Google
 
SQL-SERVER触发器
〖编辑:Cloudy | 浏览:人次〗

1、触发器。

  定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
  常见的触发器有三种:分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器,这里不提)

  我为什么要使用触发器?
    比如,这么两个表:
  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
    for Update   --触发器类型--Update
  -------------------------------------------------------
  --Name:truStudent
  --func:更新BorrowRecord 的StudentID,与Student同步。
  --Use :None
  --User:System
  --Author: wp_love
  --Date : 2003-4-16
  --Memo : 临时写写的,给大家作个Sample。没有调试阿。
  -------------------------------------------------------
  As
    if Update(StudentID)
    begin

    Update BorrowRecord
      Set br.StudentID=i.StudentID
      From BorrowRecord br , Deleted d ,Inserted i
      Where br.StudentID=d.StudentID

    end    
         
  理解触发器里面的两个临时的表:Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表“旧的一条记录”和“新的一条记录”。
  一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。

  对于2,创建一个Delete触发器
  Create trigger trdStudent
      On Student
      for Delete
  -------------------------------------------------------
  --Name:trdStudent
  --func:同时删除 BorrowRecord 的数据
  --Use :None
  --User:System
  --Author:
  --Date : 2003-4-16
  --Memo : 临时写写的,给大家作个Sample。没有调试阿。
  -------------------------------------------------------
  As
    Delete BorrowRecord
    From BorrowRecord br , Delted d
    Where br.StudentID=d.StudentID

  从这两个例子我们可以看到了触发器的关键:A.2个临时的表;B.触发机制。
  这里我们只讲解最简单的触发器。复杂的容后说明。


录入时间:2007-03-30 11:21:15 [打印本页] [关闭窗口] [返回顶部]
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

Copyright © 2006-2014 0733168.Com Inc All Rights Reserved
关于我们 | 广告合作 | 联系我们 | 法律声明 | 友情链接 | 意见反馈
本站所收录信息、社区话题、及本站所做之广告均属其个人行为,与本站立场无关
湘ICP备06008436号