postgresについてもっと知る必要がありますが、postgres dbのトリガーにリンクする関数を書こうとしています。しかし、通常、関数がうまく動作しますが、この特定の関数は、出力の最後に構文を中心にエラーを返し続けます。"LANGUAGE"の近くに構文エラーがあるPostgreSQLで私の最初のトリガーを作成する
私は 'Result'という列のフィクスチャテーブルを持っています。私は器具から得点を読みたいと思います。ウルフ0:0イプスウィッチ、結果「引き分け」にトリガー。
次のように私が書いているクエリは次のとおりです。
CREATE OR REPLACE FUNCTION sppullscoretrigger()
RETURNS trigger
SECURITY DEFINER
AS $BODY$
DECLARE
payload text;
BEGIN
SELECT NEW.Home_Side_Score, NEW.Away_Side_Score FROM Fixtures;
IF NEW.Home_Side_Score is NULL or NEW.Away_Side_Score is NULL THEN NEW.Result = 'TBC';
IF NEW.Home_Side_Score = NEW.Away_Side_Score THEN NEW.Result = 'Draw';
IF NEW.Home_Side_Score > NEW.Away_Side_Score THEN NEW.Result = 'Home_Win';
IF NEW.Home_Side_Score < NEW.Away_Side_Score THEN NEW.Result = 'Away_Win';
ELSE NEW.Result = 'Error';
END IF;
RETURN NEW;
END
$BODY$
LANGUAGE plpgsql
CREATE TRIGGER trgscore
BEFORE INSERT OR UPDATE
ON Fixtures
FOR EACH ROW
EXECUTE PROCEDURE sppullscoretrigger();
私は前に基本的な機能を書かれているが、私は本当に仕事に、このトリガーを取得して苦労しています。
トリガー機能の後に(そして 'create trigger'の前に)'; 'がありません。また、 'SELECT NEW.Home_Side_Score、NEW.Away_Side_Score FROM Fixtures;は' fixtures'テーブルからすべての***行を選択しますが、各行に対して一定の値を持ちます。選択する必要はありません。行レベルのトリガでは、単に 'new'と' old'レコードにアクセスすることができます –
ありがとうございます。私は不足しているセミコロンを入れました。問題を解決したのは、ヨアヒムのELSIF問題でした。 – LemusThelroy
データを挿入するときにこのトリガを使用しようとしましたが、「エラー:レコード '新規」フィールドに' home_side_score 'というコンテキストがありません。 。" 何か案は?私は新しい属性が私がインポートするデータを保持すると思ったので、フィールドhome_side_scoreなどがあります。 – LemusThelroy