ORA-01400: cannot insert NULL into (column)(列に NULL は挿入できない)
Oracle意味
NOT NULL 制約のある列に NULL 値が挿入または設定された。必須フィールドを空にすることはできない。
原因
INSERT で必須列に値が指定されていない、UPDATE で列を NULL に設定した、列に DEFAULT が定義されていない、または副クエリ/アプリケーションから空の値が渡された。
対処方法
エラーメッセージに示された列に有効な値を指定する。列に適切なデフォルトを定義する: ALTER TABLE my_table MODIFY (my_column DEFAULT 0); (DEFAULT は INSERT で列が完全に省略された場合にのみ適用される。明示的に送られた NULL 値には 12c 以降の DEFAULT ON NULL を使う: ALTER TABLE my_table MODIFY (my_column DEFAULT ON NULL 0);) ルールが本当に必須でなければ制約を削除する: ALTER TABLE my_table MODIFY (my_column NULL); 空の値は送信前にアプリケーションで検証する。
同じデータベースの他の項目
- library cache lock待機: ライブラリキャッシュのオブジェクトハンドルをめぐる競合 (解析/DDL のシリアライズ)
- ORA-00604error occurred at recursive SQL level(再帰 SQL レベルでエラーが発生)
- ORA-01438value larger than specified precision allowed for this column(列の精度を超える値)
- ORA-02291integrity constraint violated - parent key not found(整合性制約違反 - 親キーがない)
- ORA-02292integrity constraint violated - child record found(整合性制約違反 - 子レコードがある)
- ORA-00979not a GROUP BY expression(GROUP BY の式ではない)
- ORA-00918column ambiguously defined(列の定義が曖昧)