我有這個結構如下表:更新一個在觸發器列在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:這是怎麼做的多行更新,但? –