-1

我有两张桌子——卡片和日记。卡片的 ID(代码)是日志(卡片代码)中的链接器。一张卡片可以有许多日志,我需要使用触发器从日志更新此卡片表中的字段(时间) - 我已经编写了当前触发器,但它有错误。请帮我找到它。

 AS
 DECLARE VARIABLE currentTimeOfChanging timestamp;
begin
 select current_timestamp from rdb$database into currentTimeOfChanging;

 update card
 set card.lastupdate = currentTimeOfChanging;//!error
 where card.code = journal.cardcode
end
4

1 回答 1

1

我想你想要这样的触发器:

CREATE TRIGGER SetLastUpdateTS FOR journal
ACTIVE AFTER UPDATE
AS
BEGIN
  UPDATE card SET lastupdate = CURRENT_TIMESTAMP WHERE code = NEW.cardcode;
END

一些评论:

  • 不需要currentTimeOfChangingtemp 变量,可以current_timestamp直接在UPDATE语句中使用;
  • 您必须在变量前面加上“:”并且没有“;” 在 PSQL 代码中的 UPDATE 语句中的变量之后。所以你原来的陈述应该是

    更新卡集 card.lastupdate = :currentTimeOfChanging where ...

  • 而不是journal.cardcode使用NEW和/或OLD上下文变量来引用当前语句(触发触发器)的值。

于 2012-07-26T17:47:25.190 回答