我有这个结构如下表:更新一个在触发器列在SQL Server中的同一个表只更新特定的列后,2008年
CREATE TABLE [dbo].[Tasks]
(
[TasksID] [int] IDENTITY(1,1) NOT NULL,
[CommitteeID] [int] NULL,
[TransactionDateTime] [datetime2](7) NULL,
[inspectionStatus] [nvarchar](50) NULL,
[Latitude] [nvarchar](50) NULL,
[Longitude] [nvarchar](50) NULL,
[acceptanceState] [nvarchar](50) NULL,
[comments] [nvarchar](350) NULL,
[ScheduledDateTime] [datetime2](7) NULL,
)
我想到底是创建一个触发器,更新[TransactionDateTime]
与当前日期时间,仅当列[acceptanceState]
更新。
我创建了以下触发
CREATE TRIGGER [dbo].[TransactionDateUpdate]
ON [dbo].[Tasks]
AFTER UPDATE
AS BEGIN
UPDATE dbo.Tasks
SET TransactionDateTime = GETDATE()
FROM INSERTED i
WHERE i.TasksID = Tasks.TasksID
END
这个触发的问题,它更新列[TransactionDateTime]
但如果我对任何在表中的列作出改变,我要的是仅在更改/更新列[acceptanceState]
时更新[TransactionDateTime]
。我能找到任何帮助吗?如果[acceptanceState]
更改/更新,如何添加更新条件[TransactionDateTime]
?
我搜索了很多类似的问题,但我没有发现完全相同的问题。
你将不得不删除表添加到您的查询,并检查inserted和deleted值是不一样的。 –
另外我相信SQL Server有一个函数“IF UPDATE(ColumnName)”,它可以让你检查某个列是否被更新。 –
@TabAlleman:这是怎么做的多行更新,但? –