22004: null_value_not_allowed
PostgreSQL意味
NULL を受け付けない箇所に NULL が渡された。列の NOT NULL 制約 (23502) とは異なり、通常は関数やプロシージャのコンテキストで NULL を受け付けないパラメータや操作に NULL を渡したことで発生する。Class 22 (data_exception) に属する。
原因
NOT NULL で宣言された PL/pgSQL 変数への NULL の代入、EXECUTE への NULL のクエリ文字列の受け渡し、または NULL を受け付けない組込み関数の引数への NULL の受け渡し。注: STRICT 指定の関数は NULL 入力でエラーにならず、実行せずに NULL を返す。
対処方法
失敗した行 (CONTEXT) を特定し、そこに到達する値を NULL チェックで保護するか、COALESCE でデフォルト値を与える: COALESCE(value, default_value)。PL/pgSQL では NOT NULL 変数に代入する前に値を検証し、動的 SQL では EXECUTE に渡す文字列が NULL でないことを確認する。アプリケーション層で必須項目が NULL で送信されないようにする。