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;