T-SQL如何创建更新触发器以在行更新后更新列?
我有一张如下的桌子。当一行的[Content]列被更新时,我想自动更新[UpdateTime]列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() ) 写入此触发器的最佳方式是什么?使用此选项 有关触发器的更多信息
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