본문 바로가기
Data & Programming/Oracle

[오라클-오류] ORA-01400: 삽입할 값이 없습니다.

by 눈부셔™ 2023. 7. 15.
728x90

 

[Oracle-오류] ORA-01400: 삽입할 값이 없습니다.

 

오라클오류 ORA-01400

■ 원인
ORA-01400 오류가 발생하는 주요 원인은 다음과 같습니다:
  ▶ NOT NULL 제약 조건: 테이블의 열에 NOT NULL 제약 조건이 설정되어 있을 때, 해당 열에 값을 삽입하지 않았을 때 오류가 발생합니다.
  ▶ DEFAULT 값 누락: 테이블의 열에 DEFAULT 값이 지정되어 있을 때, 값을 명시적으로 제공하지 않았을 경우에도 오류가 발생할 수 있습니다.
  ▶ 필수 열 누락: 테이블의 필수 열에 값을 제공하지 않았을 때에도 ORA-01400 오류가 발생합니다.

 

 

■ 예제
아래는 ORA-01400 오류가 발생할 수 있는 몇 가지 예제입니다:

  ▶ 예제 1: NOT NULL 제약 조건

INSERT INTO employees (employee_id, employee_name) VALUES (100, NULL);

위의 쿼리에서 employee_name 열이 NOT NULL 제약 조건을 가지고 있으며, NULL 값을 삽입하려고 합니다. NOT NULL 제약 조건을 위배하므로 ORA-01400 오류가 발생합니다.

  ▶ 예제 2: DEFAULT 값 누락

CREATE TABLE products (
  product_id NUMBER,
  product_name VARCHAR2(50) NOT NULL,
  price NUMBER DEFAULT
);

위의 예제에서는 "products"라는 이름의 테이블을 생성하였습니다. 

"product_id"는 NUMBER 데이터 타입으로, "product_name"은 VARCHAR2(50) 데이터 타입이며, NOT NULL 제약 조건이 설정되어 있습니다. "price"는 NUMBER 데이터 타입이며, DEFAULT 값이 누락되어 있습니다.
위의 쿼리를 실행하면 "products" 테이블이 생성되고, "product_id"와 "product_name" 열에는 명시적으로 값을 제공해야 하지만, "price" 열은 DEFAULT 값을 지정하지 않았으므로 ORA-01400 오류가 발생합니다. DEFAULT 값을 누락하면 테이블에서 필수적인 값을 지정하지 않아서 오류가 발생합니다.

  ▶ 예제 3: 필수 열 누락

CREATE TABLE customers (
  customer_id NUMBER,
  customer_name VARCHAR2(50) NOT NULL,
  email VARCHAR2(100)
);

INSERT INTO customers (customer_id, email) VALUES (1, 'leechonsu@daum.net');

위의 예제에서는 필수 열인 customer_name에 값을 제공하지 않았습니다. 필수 열에 값을 제공하지 않으면 ORA-01400 오류가 발생합니다.

 


■ 해결 방법
ORA-01400 오류를 해결하기 위해 다음과 같은 조치를 취할 수 있습니다:

필수 열에 값을 제공해야 합니다. 필수 열에 값을 명시적으로 제공하거나, DEFAULT 값을 활용하여 열에 자동으로 기본값을 할당하도록 설정해야 합니다.
NOT NULL 제약 조건이 있는 열에는 NULL 값을 삽입하지 않도록 주의해야 합니다.
테이블 설계를 검토하여 필수적인 열과 DEFAULT 값을 적절히 설정해야 합니다.

728x90