T-SQL如何创建更新触发器以更新行后更新列?

时间:2014-12-02 09:03:27

标签: sql sql-server

我有一张桌子如下。我希望在更新行的[内容]列时自动更新[UpdateTime]列。

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

编写此触发器的最佳方法是什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

希望它有所帮助!