読み取り専用列が変更されたときに例外を発生させようとしています。そのために私は更新前にトリガを使用していますが、構文エラーが発生しています。PostgreSQLの読み取り専用列の更新時に例外が発生する
DROP TRIGGER IF EXISTS check_update_guid_line ON line;
CREATE TRIGGER check_update_guid_line
BEFORE UPDATE ON line FOR EACH ROW
WHEN (OLD.guid IS DISTINCT FROM NEW.guid) THEN
RAISE EXCEPTION 'you cant modify the guid of a line');
ERROR: syntax error at or near "THEN" LINE 29: ...OLD.guid IS DISTINCT FROM NEW.guid) THEN
私は、コードに行の束を拡張する手順を作ることができると思いますが、私はこのコードはとにかく動作しない理由を知っていただきたいと思います。
あなたはトリガーを作成する文を使用して、トリガー・コードをインラインで配置することはできません。参照できる関数を作成する必要があります。詳細と例については、マニュアルを参照してください。https://www.postgresql.org/docs/current/static/sql-createtrigger.html#SQL-CREATETRIGGER-EXAMPLESおよびhttps://www.postgresql.org/docs/current /static/plpgsql-trigger.html –