はじめに

スクリプトの処理中にエラーが発生した場合、スクリプトの後続の処理を実行させない方法をご紹介します。
vsqlのデフォルトの設定では、スクリプトの途中でエラーが発生してもスクリプトの最後まで処理を行います。
もしエラー以降の処理を実行させたくない場合、vsqlで”ON_ERROR_STOP”に”on”を設定することでエラー以降の処理を実行させないことができます。

コマンド構文

vsqlで”ON_ERROR_STOP”の設定を行います。

[設定]
\set ON_ERROR_STOP on

[解除]
\set ON_ERROR_STOP off

補足

“ON_ERROR_STOP”の設定によって以下の違いもあります。
・”ON_ERROR_STOP”に”on”を設定している場合は、スクリプトのエラーで終了コードに”3″が設定されます。
・”ON_ERROR_STOP”に”on”を設定していない場合は、スクリプトのエラーで終了コードに”0″(正常)が設定されます。

利用例

例えば、UPDATE、INSERT、DELETE、COMMITの処理が含まれたスクリプトがあります。
スクリプトの先頭で”ON_ERROR_STOP”にonを設定して、スクリプトでエラーが発生した場合、それ以降の処理は行わずにロールバックして終了します。

(1)vsqlで実行するスクリプト


(2)テーブルのデータを確認


(3)Verticaに接続してスクリプトを実行
UPDATEは実行されますがINSERTで重複エラーが発生し、それ以降の処理は行われません。


(4)終了コードを確認
スクリプトの実行でエラーが発生したため、終了コードが”3″になります。


(5)テーブルのデータを確認
スクリプト実行の前後でデータは同じで更新はされていません。


検証バージョンについて

この記事の内容はVertica 8.0で確認しています。