Jiniya

WEB

ORA-01400 : NULL을 ("DB명"."테이블명"."칼럼") 삽입…

ORA-01400 : NULL을 ("DB명"."테이블명"."칼럼") 삽입할 수 없습니다 


 ◆ 문제 원인


  cannot insert NULL into ("eai"."test_table"."name")


  해당 에러는 데이터를 insert 할 때, eai.test_table 의 name 컬럼의 속성이 not null 인데 데이터를 넣지 않아서 (null) 발생


 ◆ 문제 해결

 

  * 데이터를 insert 하기 전에 not null 컬럼을 확인하여 해당 컬럼들에는 데이터를 필수적으로 입력하면 된다.


  * 데이터가 있음에도 not null 이 발생할 경우, 값이 null 인 이유를 확인한다. 


  1. 계산에서 null 이 발생할 경우 null 이 발생하는 경우를 없애야 한다.


     cnt_no 라는 not null 컬럼에 max(cnt_no) + 1 를 했을 경우, 테이블에 값이 없다면 (레코드가 0인 경우) null 이 되므로 에러가 발생한다.


     그런 경우 max( nvl(cnt_no, 0) + 1 ) 를 해서, 레코드가 0일 경우 max(cnt_no) 값을 0으로 변환을 해서 0 + 1 로 만들어 해결한다.



  2. 변수를 이용하여 insert 할 경우, null이 발생하지 않는 변수라면 변수의 선언문이나 정의문이 문제가 있는지 확인한다.


     * 선언


       <field key="0" nofetch="0" name="DIVISION_CD"/>


     * sql 정의


        INSERT INTO EAI.TEST_EAI  ( DIVISION_CD, COM_CD, GROUP_ID, TEXT)


        VALUES  (:DIVISION_CODE, :COMPANY_CODE, :GROUP_ID, :TEXT)