4

トリガー関数でデバッグしようとしているエラーがあります。Postgres ログには、次のようなものがあります。

2012-08-16 21:41:23 PDT ERROR:  Unknown period: D
2012-08-16 21:41:23 PDT CONTEXT:  PL/pgSQL function "handle_promotion_update" 
    line 60  at assignment
SQL statement "UPDATE promotion SET some_column = foo + 1
    WHERE id = NEW.promotion_id"
PL/pgSQL function "handle_new_reward" line 94 at SQL statement

だから、私の問題はおそらく「60行目」から始まるようです

私の質問は、行番号はどこから始まるのですか? pgAdmin に移動して関数宣言を見ると、上部に「ヘルパー」(delete 関数など) があります。だから、そこからではないと思います。しかし、関数宣言が含まれていますか?それとも、の行からBEGINですか?

4

1 に答える 1

3

PostgreSQL サーバー ログに表示される行番号は、関数本体の開始引用符のある行から始まります。pgAdmin SQL エディターで絶対行番号に到達するには、その前に行を追加する必要があります。

混乱しないでください: 関数の作成中にエラーが発生した場合、別の行番号が表示されます: これらは実行されたスクリプト全体を参照し、実行時エラーの行番号は関数本体を参照します。

于 2012-08-17T05:10:01.153 に答える