2014-12-02 112 views
0

我有一個表如下。我想在行的[Content]列更新時自動更新[UpdateTime]列。T-SQL如何在更新行後創建更新觸發器以更新列?

CREATE TABLE [dbo].[FileContent] 
(
    [FileId] INT NOT NULL PRIMARY KEY, 
    [Content] NVARCHAR(MAX) NOT NULL , 
    [UpdateTime] DATETIME NOT NULL DEFAULT GetDate() 
) 

寫這個觸發器的最好方法是什麼?

+1

只有一種寫觸發器的方法。你是什​​麼意思最好的方式?向我們展示一些代碼。 – Raj 2014-12-02 09:06:47

+3

只是在你的鍵盤上狂熱地打字......如果你幸運的話,如果它出現,你會得到一個觸發器! :)認真:只需鍵入它 - 閱讀[觸發器官方MSDN文檔](http://msdn.microsoft.com/en-us/library/ms189799.aspx)獲取語法詳細信息權限 – 2014-12-02 09:07:49

回答

1

使用此。請參閱link

CREATE TRIGGER Sample ON [dbo].[FileContent] 
FOR UPDATE 
AS 
BEGIN 
    IF UPDATE([Content]) 
    BEGIN 
     DECLARE @nFieldID AS INT 

     SELECT @nFieldID = [FileId] FROM INSERTED 

     UPDATE [dbo].[FileContent] 
     SET [UpdateTime] = GETDATE() 
     WHERE [FileId] = @nFieldID  
    END  
END 
0

我會用這樣的:

CREATE TRIGGER yourTrigger ON [dbo].[FileContent] 
INSTEAD OF UPDATE 
AS 

DECLARE @ID int, @newValue nvarchar(MAX) 

IF UPDATE(FileId) 
    RAISERROR ('Not allowed', 10,1) 
ELSE 
BEGIN 
    IF UPDATE(Content) 
    BEGIN 
     --set local variables 
     SET @ID = (SELECT FileId FROM inserted) 
     SET @newValue = (SELECT Content FROM inserted) 

     --write to table 
     UPDATE [dbo].[FileContent] SET Content = @newValue, Update_Date = getdate() WHERE FileId = @ID 
    END 

END 
GO 

希望它能幫助!