BETA

PostgreSQLでエラーを発生させて終了したい

投稿日:2020-07-22
最終更新:2020-07-22

PostgreSQLで入力チェックなどをしたときに自前でエラーにする方法が分かりませんでした。
(psqlの終了コードの正常、異常で呼び出し元の処理を振り分けるためです)

わざと間違える

SELECT 1/0;  

$ psql -v ON_ERROR_STOP=true -f test.sql  
psql:test.sql:1: ERROR:  division by zero  
$ echo $?  
3  

RAISEを使う

DO $$ BEGIN RAISE EXCEPTION 'error message'; END $$;  

$ psql -v ON_ERROR_STOP=true -f test.sql  
psql:test.sql:1: ERROR:  error message  
CONTEXT:  PL/pgSQL function inline_code_block line 1 at RAISE  
$ echo $?  
3  

PL/pgSQLのRAISE文を呼び出せばいいんですが、サンプルはCREATE FUNCTIONで定義するものばかりでDOコマンドでPL/pgSQLの無名ブロックが使えることが分かりませんでした。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

すごーい。 きみはクランチのフレンズなんだね。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう