「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

OracleでINSERT文を実行した際、次のようなエラーが表示されることがあります。

このエラーは、NOT NULL制約が設定されているカラムにNULL値を挿入しようとした場合に発生します。
SQLを修正するだけではなく、アプリ側の値生成ロジック、シーケンス、トリガー、デフォルト値の設定漏れなど、原因は複数存在します。

この記事では、ORA-01400が発生する仕組み、よくある原因、チェックポイント、具体的な対策手順をわかりやすく解説します。

ORA-01400 NULLを挿入できません_2


ORA-01400 とは?

ORA-01400 は Oracle の NOT NULL 制約に関連するエラーで、
データベースが「空の値を入れないでほしい」と指定しているカラムに NULL を挿入しようとしたときに発生します。

❌ 発生例

user_id が NOT NULL 制約付きである場合、この SQL は失敗します。


エラーメッセージの読み方

例:

  • "APP" → スキーマ名

  • "USERS" → テーブル名

  • "USER_ID" → NULLが禁止されているカラム名

このメッセージをそのまま手掛かりに調査できます。


よくある原因

原因よくあるケース対策
NOT NULL制約付きカラムに値が指定されていないアプリ側で値渡し忘れSQL・アプリ修正
シーケンス未使用・NEXTVAL抜け主キー自動採番漏れsequence.nextval を使用
トリガーが動作していないDDL変更後トリガー無効化トリガー修正・再有効化
DEFAULT値が設定されていない設計ミスDEFAULT 設定
CSVやETL入力データの欠損バッチ・移行処理データ補正・前処理

対応手順(チェックリスト)

  1. エラーに表示されたカラムを確認する

  2. そのカラムに NOT NULL 制約があるか確認

  3. INSERT文に該当カラムが含まれているか確認

  4. シーケンス or トリガーが動作しているか確認

  5. データ入力元(アプリ・バッチ・CSV)をチェック


具体的な対策例

① SQLで値を指定する


② シーケンスを利用する場合


③ DEFAULT値を設定する


④ トリガーが動作していない場合

修正例


再発防止のポイント

  • 必須項目(NOT NULL列)には仕様として意味がある

  • アプリ・バッチ・DB設計のいずれかが不一致だと発生しやすい

  • 主キー・採番・入力必須ルールは設計段階で明示することが重要です

対策リスト

✔ DB設計書に必須項目一覧を追加
✔ シーケンス or UUID生成ルールを統一
✔ バッチ/CSV入力処理に前処理ロジックを追加
✔ 例外検知をログに残す仕組みを整備


まとめ

  • ORA-01400NOT NULL制約付きのカラムにNULLが入ったときに発生します。

  • 原因はSQLだけでなく、アプリ側やトリガー、シーケンス設定など多岐にわたります。

  • テーブル制約・アプリ処理・データ移行の3方面から確認することで、効率的に解決できます。

Ads by Google