我有一张桌子如下。我希望在更新行的[内容]列时自动更新[UpdateTime]列。
CREATE TABLE [dbo].[FileContent]
(
[FileId] INT NOT NULL PRIMARY KEY,
[Content] NVARCHAR(MAX) NOT NULL ,
[UpdateTime] DATETIME NOT NULL DEFAULT GetDate()
)
编写此触发器的最佳方法是什么?
答案 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
希望它有所帮助!