zoukankan      html  css  js  c++  java
  • SQL Server触发器

    最近在客户的项目里又用到了触发器,总结一下。

    1、触发器是什么:

    触发器是一种特殊类型的存储过程,它在您使用一种或多种数据修改操作(UPDATE、INSERT 或 DELETE)来修改指定表中的数据时运行。

    2、触发器语法:

    1 CREATE TRIGGER authors_Trigger1
    2 ON dbo.authors
    3 FOR /* INSERT, UPDATE, DELETE */
    4 AS
    5    /* IF UPDATE (column_name) . . .*/

    1 CREATE TRIGGER titleview_Trigger1
    2 ON dbo.titleview
    3 INSTEAD OF /* INSERT, UPDATE, DELETE */
    4 AS
    5    /* IF UPDATE (column_name) . . .*/

    3、触发器种类

    Instead of  和 After两种

    Instead of触发器:插入真正的操作之前执行。

    After:在执行完指定的操作以后执行

     1 --1、Instead of 触发器
     2 create trigger trigger_Student
     3 on student
     4 instead of delete
     5 as
     6 begin
     7     select * from Student
     8 end
     9 
    10 delete from student where id = 1
    11 --执行Delete操作,实际执行了Select操作
    1 --2、After触发器
    2 alter trigger After_Trigger
    3 on student
    4 after update
    5 as 
    6     begin
    7     insert into studentinfo(name,school) (select Name,School   from inserted where FStatus = 1 and Name not in(select name from StudentInfo))
    8     end

    SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。

    Inserted: insert和update之后的新值集合

    Deleted:delete和update之前的旧值集合

    例如:更新Student表中ID为1的学生姓名为Jake

                      student表

    ID Name         Age            School               FStatus
    HelloWorld       20           湖南 学校   1

     

     

    1     --创建触发器
    2     create trigger trigger_1
    3     on student
    4     after update
    5     as
    6         begin
    7         select * from inserted
    8         end    

    更新时会显示如下值:

    1 update Student set Name = 'Jake' where id = 1
    Id Name Age School FStatus
    1 Jake 20 湖南学校 1

     

     

    1 alter trigger trigger_1
    2     on student
    3     after update
    4     as
    5         begin
    6         select * from deleted
    7         end

    更新时会显示如下值:

    update Student set Name = 'Jake' where id = 1
    Id Name Age School FStatus
    1 HelloWorld 20 湖南学校 1

     

     

  • 相关阅读:
    Git配置SSH访问GitHub
    vue 관련
    node
    关于CheckBox和EditText在ListView里多布局的处理
    百度地图定位
    java常用简单正则表达式写法
    Android二维码开源项目zxing编译
    Andrew XUtils的session获得和cookieStore使用
    常用易忘知识点
    替换Fragment 报错 The specified child already has a parent. You must call removeView()
  • 原文地址:https://www.cnblogs.com/zhaotianff/p/5775869.html
Copyright © 2011-2022 走看看