Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
T-SQL如何创建更新触发器以在行更新后更新列?_Sql_Sql Server - Fatal编程技术网

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

T-SQL如何创建更新触发器以在行更新后更新列?,sql,sql-server,Sql,Sql Server,我有一张如下的桌子。当一行的[Content]列被更新时,我想自动更新[UpdateTime]列 CREATE TABLE [dbo].[FileContent] ( [FileId] INT NOT NULL PRIMARY KEY, [Content] NVARCHAR(MAX) NOT NULL , [UpdateTime] DATETIME NOT NULL DEFAULT GetDate() ) 写入此触发器的最佳方式是什么?使用此选项 有关触发器的更多信息

我有一张如下的桌子。当一行的[Content]列被更新时,我想自动更新[UpdateTime]列

CREATE TABLE [dbo].[FileContent]
(
    [FileId] INT NOT NULL PRIMARY KEY, 
    [Content] NVARCHAR(MAX) NOT NULL ,
    [UpdateTime] DATETIME NOT NULL DEFAULT GetDate()
)
写入此触发器的最佳方式是什么?

使用此选项

有关触发器的更多信息,请参阅此


我会用这样的方式:

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

希望有帮助

只有一种方法可以写入触发器。什么是最好的方式?给我们看一些代码。只要在键盘上狂热地打字。。。如果你幸运的话,你会被触发的认真地说:只需输入-阅读以获得正确的语法细节
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