【发布时间】:2015-05-13 09:02:01
【问题描述】:
我正在制作一个包含姓名、电子邮件等的简单表格,但我也有一个ModifiedDate。我的想法是在插入和更新之后使用触发器,并插入当前日期。因此,如果有人对该列执行任何操作(删除除外),日期应该反映这一点。
但这不起作用。
CREATE TRIGGER ModDate
ON X
AFTER INSERT, UPDATE
AS
BEGIN
INSERT INTO X (ModifiedDate)
VALUES (GETDATE())
END
现在我有几个不能为空的值,这似乎是尝试创建一个新行。我希望它将日期插入当前正在执行的行中,但我不知道如何。另外,如果我一次添加 5 行怎么办?
【问题讨论】:
-
当然是创建一个新行,你有一个 INSERT 语句。如果要拦截插入和/或更新以更改其中一个值,则需要使用 INSTEAD 触发器。然后要处理多行操作,您需要创建触发器代码,以便它引用插入的虚拟表。我建议使用两个触发器而不是一个。或者更好的办法是把这个逻辑放在你的程序中。
-
@SeanLange 我如何将这个逻辑放在我的“程序”中?
-
我假设您使用更新和插入过程,但情况可能并非如此。 :)
标签: sql-server triggers sql-insert