【发布时间】:2014-05-22 16:54:40
【问题描述】:
您好朋友,目前我的触发器更新表更新,我需要将其更改为仅在特定列更改时触发。
/****** Object: Table [dbo].[User_Detail] ******/
SET ANSI_NULLS ON
去
设置 QUOTED_IDENTIFIER ON 去吧
CREATE TABLE [dbo].[User_Detail](
[sno] [int] IDENTITY(1,1) NOT NULL,
[userid] [nvarchar](50) NULL,
[name] [nvarchar](max) NULL,
[jointype] [nvarchar](50) NULL,
[joinside] [nvarchar](50) NULL,
[lleg] [nvarchar](50) NULL,
[rleg] [nvarchar](50) NULL,
[ljoining] [int] NULL,
[rjoining] [int] NULL,
[pair] [int] NULL
) ON [PRIMARY]
GO
/** 对象:表[dbo].[User_Detail] 表数据**/
SET IDENTITY_INSERT [dbo].[User_Detail] ON
INSERT [dbo].[User_Detail] values (1, N'LDS', N'LDS Rajput', N'free', N'Left', N'jyoti123', N'SUNIL', 6, 4, 4)
INSERT [dbo].[User_Detail] VALUES (2, N'jyoti123', N'jyoti rajput', N'free', N'Left', N'mhesh123', N'priya123', 3, 2, 2)
SET IDENTITY_INSERT [dbo].[User_Detail] OFF
/** 对象:表[dbo].[User_Detail] 触发器**/
CREATE TRIGGER triggAfterUpdate ON User_Detail
FOR UPDATE
AS
declare @userid nvarchar(50);
declare @pair varchar(100);
select @userid=i.userid from inserted i;
select @pair=i.pair from inserted i;
SET NOCOUNT ON
if update(pair)
begin
insert into Complete_Pairs(userid,pair)
values(@userid,1);
end
GO
/****** Object: Table [dbo].[Complete_Pairs] Script Date: 05/22/2014 21:20:35 ******/
设置 ANSI_NULLS ON 去吧
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Complete_Pairs](
[Sno] [int] IDENTITY(1,1) NOT NULL,
[userid] [nvarchar](50) NULL,
[pair] [int] NULL
) ON [PRIMARY]
GO
我的查询是 TRIGGER,triggAfterUpdate 仅在 User_Details 表中的 pair 列仅更新并且当我们更新 ljoin 或 rjoin 等其他列时触发,然后我的触发器不会触发
请任何人建议我们如何完成或提供解决方案
【问题讨论】:
标签: sql-server