gpt4 book ai didi

插入触发器后的 Firebird - 向插入的行插入时间戳

转载 作者:行者123 更新时间:2023-12-02 18:20:47 25 4
gpt4 key购买 nike

我有一个“时间戳”类型的字段,称为“inserted_when”。如何在插入后更新此字段(插入时间戳)(因此它仅适用于选定的插入记录)?当然是通过触发器...编辑:

我尝试过这个,但似乎无法使未注释的部分工作。

SET TERM ^ ;
CREATE TRIGGER AFTER_INSERT FOR MYTABLE
ACTIVE AFTER INSERT POSITION 1
AS
BEGIN
UPDATE MYTABLE
SET MYTABLE.inserted_when = current_timestamp;

---- where mytable.ID = Inserted.ID
END^

SET TERM ; ^

最佳答案

要更新正在插入的记录,您需要使用 BEFORE INSERT 触发器,而不是 AFTER INSERT 触发器。要插入的行的值可以通过 NEW 上下文变量访问(和更新)(还有一个 OLD 上下文变量,但这与插入触发器)。请注意,Firebird 每行触发一次。

因此您需要将触发器更改为:

CREATE TRIGGER BEFORE_INSERT_MYTABLE FOR MYTABLE
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.inserted_when = current_timestamp;
END

请注意,OLD 上下文变量永远不可修改,NEW 上下文变量只能在 BEFORE 触发器中修改。

关于插入触发器后的 Firebird - 向插入的行插入时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610382/

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