gpt4 book ai didi

sql-server - 触发添加修改日期的插入和更新

转载 作者:行者123 更新时间:2023-12-03 23:23:31 25 4
gpt4 key购买 nike

我正在制作一个包含姓名、电子邮件等的简单表格,但我还有一个 ModifiedDate .我的想法是在插入和更新后使用触发器,并插入当前日期。因此,如果有人对该列执行任何操作(删除除外),则日期应反射(reflect)这一点。

然而,这是行不通的。

CREATE TRIGGER ModDate
ON X
AFTER INSERT, UPDATE
AS
BEGIN

INSERT INTO X (ModifiedDate)
VALUES (GETDATE())

END

现在我有几个不能为空的值,这似乎是尝试创建一个新行。我希望它将日期插入当前正在执行的行中,但我不知道如何。如果我一次添加 5 行怎么办?

最佳答案

您需要加入inserted触发器中的虚拟表以将更新的行限制为实际更改的行。尝试这个:

CREATE TRIGGER ModDate
ON TableX
AFTER INSERT, UPDATE
AS
BEGIN
UPDATE X
SET ModifiedDate = GETDATE()
FROM TableX X
JOIN inserted i ON X.key = i.key -- change to whatever key identifies
-- the tuples
END

就像@ZoharPeled 在下面的评论中正确指出的那样,让触发器更新插入日期确实没有多大意义 - 最好使用 getdate()作为列上的默认值(或者甚至作为另一列 InsertedDate,如果您想跟踪最初创建记录的时间)并且让触发器只修改 ModifiedDate更新后的列。

documentation有关插入和删除表的更多信息。

关于sql-server - 触发添加修改日期的插入和更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28988885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com