zoukankan      html  css  js  c++  java
  • SqlServer触发器

    1、创建测试表
    USE [test]
    GO
    
    /****** Object:  Table [dbo].[xmq_1]    Script Date: 10/09/2017 17:31:21 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    SET ANSI_PADDING ON
    GO
    
    CREATE TABLE [dbo].[xmq_1](
    	[id] [varchar](100) NOT NULL,
    	[col1] [varchar](500) NULL,
    	[col2] [varchar](500) NULL,
     CONSTRAINT [PK_xmq_1] PRIMARY KEY CLUSTERED 
    (
    	[id] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    GO
    
    SET ANSI_PADDING OFF
    GO

      

    2、创建测试日志表

    USE [test] GO /****** Object: Table [dbo].[xmq_1_log] Script Date: 10/09/2017 17:32:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[xmq_1_log]( [id] [varchar](100) NOT NULL, [src_id] [varchar](100) NOT NULL, [mod_date] [datetime] NOT NULL, CONSTRAINT [PK_log_xmq_1] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO

     

    /**创建触发器**/
    CREATE TRIGGER xmq_1_trigger
    ON xmq_1
    AFTER UPDATE
    AS
    	BEGIN
    		
    		/**数据获取**/
    		declare @xmq_1_id varchar(100),@col1_old varchar(500),@col1_new varchar(500),@col2_old varchar(500),@col2_new varchar(500)
    		/**赋值**/
    		select @xmq_1_id=id,@col1_old=col1,@col2_old=col2 from DELETED
    		select @col1_new=col1,@col2_new=col2 from INSERTED
    		/**判断日志表是否有数据,有就更新、否则插入**/
    		if(select count(*) from xmq_1_log where src_id=@xmq_1_id)>0
    		begin
    			/**不更新col2字段的时候更新日志表**/
    			if not update(col2)
    			begin
    				update xmq_1_log set mod_date=getdate() where src_id=@xmq_1_id
    			end
    		end
    		else
    		begin
    			insert into xmq_1_log values(replace(newid(),'-',''),@xmq_1_id,getdate())
    		end
    		
    	END
    /**修改ALTER TRIGGER xmq_1_trigger**/
    /**禁用触发器**/
    disable trigger xmq_1_trigger on xmq_1;
    /**启用触发器**/
    enable trigger xmq_1_trigger on xmq_1;
    /**查询已存在的触发器**/
    select * from sys.triggers;
    select * from sys.objects where type = 'TR';
    /**查看创建触发器语句**/
    exec sp_helptext 'xmq_1_trigger';

      

    /**测试**/
    insert into xmq_1 values(replace(newid(),'-',''),'a','b');
    update xmq_1 set col1='a2';
    update xmq_1 set col2='b2';
    update xmq_1 set col1='a2',col2='b2';
    select * from xmq_1;
    select * from xmq_1_log;
    

      

     

  • 相关阅读:
    day01-java开发前奏
    ASP.NET MVC RDLC-导出
    SAS学习目标层次
    Chapter003[SAS DATA步之全解密-02]
    Chapter002[SAS DATA步之全解密-01]
    Chapter001[SAS LICENCE 获取方法]
    VB.NET中如何在字符串中使用双引号
    ASP.NET数据处理进度条
    GridView内容详解(转载)
    js正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
  • 原文地址:https://www.cnblogs.com/xmqa/p/7642049.html
Copyright © 2011-2022 走看看