time 
设为首页】【收藏本站
当前位置: 主页 > 数据库 > SQL Server > SQL 基础 > SQL基础总结(一)触发器、存储过程、表变量和临时表

SQL基础总结(一)触发器、存储过程、表变量和临时表

时间:2013-10-14 13:44 点击:1880次 字体:[ ]




触发器

 

  触发器的基础知识

  1. create trigger tr_name   
  2. on table/view   
  3. {for | after | instead of } [update][,][insert][,][delete]   
  4. [with encryption]   
  5. as {batch | if update (col_name) [{and|orupdate (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 ,inserted
    deleted 和inserted 可以说是一种特殊的临时表,是在进行激活触发器时由系统自动生成的,其结构与触发器作用的表结构是一样的,只是存放 的数据有差异。
    8 说明deleted 与inserted 数据的差异
    deleted 与inserted 数据的差异
    Inserted 存放进行insert和update 操作后的数据
    Deleted 存放进行delete 和update操作前的数据
    注意:update 操作相当于先进行delete 再进行insert ,所以在进行update操作时,修改前的数据拷贝一条到deleted 表中,修改后的数据在存到触发器作用的表的同时,也同时生成一条拷贝到insered表中

 

  触发器典型示例

  1. if exists(select name from sysobjects where xtype='tr' and name='tri_updateStudent')  
  2. begin 
  3.     drop trigger tri_UpdateStudent  
  4. end 
  5. go  
  6. create trigger tri_UpdateStudent  
  7.     on dbo.student  
  8.     for update 
  9. as 
  10.     if update(Sage)  
  11.     begin 
  12.        update student set sage=s.sage+d.sage from student s,deleted d where s.studentid=d.studentid  
  13.     end 
  14. go  



本文地址 : http://www.fengfly.com/plus/view-213919-1.html
标签: 触发器 存储过程 SQL 临时表 表变量
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码: