zoukankan      html  css  js  c++  java
  • Trigger的用法及Inserted Deleted的作用

    Table Name:   TB_1,TB_2   (两个table 结构完全一样)

    Create Table TB_1(ID Int, Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))

    Create Table TB_2(ID Int, Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))

    -- 为Tb_1创建Trigger, 当 TB_1 发生变化时,变化的信息(Insert ,Update,Delete)将保存于 TB_2 中,Update是两条记录,Update 之前和之后 都要保存盐类

    Create trigger Trig_t2
    On Tb_1
    For Insert,Update,Delete
    As
    declare @id int,
              @name_1 varchar(20),
       @status varchar(20)

    If not exists(Select 1 from deleted)   ----Insert
        Begin
         select @id=id, @name_1=name_1,@status=status from inserted
         insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Insert')
        End

    If exists(select 1 from inserted) and exists(select 1 from deleted) ---Update
    Begin
         /* Update Before */
         select @id=id, @name_1=name_1,@status=status from deleted
         insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateBefor')

         /* Update End */
         select @id=id, @name_1=name_1,@status=status from inserted
         insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateEnd')
    End

    If not exists(select 1 from inserted) ---Delete
    Begin
        
         select @id=id, @name_1=name_1,@status=status from inserted
         insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Delete')
    End

    ----测试----

    insert into tb_1(id,name_1,status)values('1','1','1')
    select * from tb_1
    select * from tb_2

    id          name_1               status               type                                              
    ----------- -------------------- -------------------- --------------------------------------------------
    1           1                    1                    NULL

    (1 row(s) affected)

    id          name_1               status               type                                              
    ----------- -------------------- -------------------- --------------------------------------------------
    1           1                    1                    Insert


    -----------测试Update---------------

    update tb_1 set name_1='2'where id='1'

    select * from tb_1
    select * from tb_2

    id          name_1               status               type                                              
    ----------- -------------------- -------------------- --------------------------------------------------
    1           2                    1                    NULL

    (1 row(s) affected)

    id          name_1               status               type                                              
    ----------- -------------------- -------------------- --------------------------------------------------
    1           1                    1                    Insert
    1           1                    1                    UpdateBefor
    1           2                    1                    UpdateEnd

  • 相关阅读:
    【转载】线程数究竟设多少合理
    【转载】lvs为何不能完全替代DNS轮询
    接口测试考虑点
    隐式等待的两种写法
    邮件的操作
    Python列表排序 reverse、sort、sorted 操作方法
    兼容和适配的区别
    文件操作-oracle数据库
    初试线程-文件操作
    Selenium Grid分布式测试入门笔记
  • 原文地址:https://www.cnblogs.com/guyuehuanhuan/p/1942286.html
Copyright © 2011-2022 走看看