ORA-01400: cannot insert NULL into (column)
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대기: library cache 객체 핸들 경합(parse/DDL 직렬화)
- ORA-00604error occurred at recursive SQL level
- 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
- ORA-00918column ambiguously defined