-1

カードとジャーナルの 2 つのテーブルがあります。カードの 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

いくつかのコメント:

  • currentTimeOfChanging一時変数は必要ありません。ステートメントでcurrent_timestamp直接使用できます。UPDATE
  • 変数の前に「:」を付ける必要があり、「;」はありません。PSQL コードの UPDATE ステートメントの変数の後。だからあなたの元の声明は

    更新カード セット card.lastupdate = :currentTimeOfChanging where ...

  • および/またはコンテキスト変数をjournal.cardcode使用して現在のステートメント (トリガーをトリガーした) の値を参照する代わりに。NEWOLD

于 2012-07-26T17:47:25.190 に答える