我有一个名为“时间戳”类型的字段,称为“ 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 UPDATE
触发器,而不是AFTER UPDATE
触发器。可以通过NEW
上下文变量(还有一个OLD
上下文变量,但是与插入触发器无关)来访问(和更新)要插入的行的值。请注意,Firebird每行触发一次火灾。
因此,您需要将触发器更改为:
CREATE TRIGGER BEFORE_INSERT_MYTABLE FOR MYTABLE
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.inserted_when = current_timestamp;
END
请注意,OLD
上下文变量永远不可修改,并且NEW
上下文变量只能在BEFORE
触发器中进行修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句