zoukankan      html  css  js  c++  java
  • SqlServer触发器的基础知识

    触发器的基础知识:
    create trigger tr_name on table/view
    {for | after | instead of } [update][,][insert][,][delete]
    [with encryption]
    as {batch | if update (col_name) [{and|or} update (col_name)] }

    说明:
    1 tr_name:触发器名称
    2 on table/view:触发器所作用的表。一个触发器只能作用于一个表
    3 for 和 after:二者同义
    4 after 与instead of:SqlServer 2000新增项目
    Afrer 与 Instead of 的区别如下:
    After 在触发事件发生以后才被激活,只可以建立在表上 
    Instead of 代替了相应的触发事件而被执行,既可以建立在表上也可以建立在视图上
    5 insert、update、delete:激活触发器的三种操作,可以同时执行,也可选其一
    6 if update (col_name):表明所作的操作对指定列是否有影响,有影响则激活触发器。此外,因为delete 操作只对行有影响,所以如果使用delete操作就不能用这条语句了(虽然使用也不出错,但是不能激活触发器,没实际意义)。
    7 触发器执行时用到的两个特殊表:deleted,inserted
    deleted 和 inserted 可以说是一种特殊的临时表,是在进行激活触发器时由系统自动生成的,其结构与触发器作用的表结构是一样的,只是存放的数据有差异。

    关于 deleted 与 inserted 两表的数据的差异:
    inserted 存放进行 insert 和 update 操作后的数据
    deleted 存放进行 delete 和 update 操作前的数据
    注意:update 操作相当于先进行 delete 再进行 insert,所以在进行 update 操作时,修改前的数据拷贝一条到 deleted 表中,修改后的数据在存到触发器作用的表的同时,也同时生成一条拷贝到 insered 表中
    故,很多触发器在进行数据检测或类似操作时,往往都通过这两个表来判断处理,作用很大

  • 相关阅读:
    二叉树
    消息
    线性表 及Java实现 顺序表、链表、栈、队列
    Memcache简介
    redis例子
    redis简介
    Android客户端采用Http 协议Post方式请求与服务端进行数据交互(转)
    jQueryValidate实现重复性验证
    mybatis中${}和#{}的区别
    List转换为数组Array的方法
  • 原文地址:https://www.cnblogs.com/hnllhq/p/12305975.html
Copyright © 2011-2022 走看看