2017-01-21 5 views
1

이전 "예약"을 기반으로 새 테이블 "old_booking"을 만들고 이전 테이블의 "dateTo"행을 새 테이블에 삽입합니다.ORA-01400 : NULL을 삽입 할 수 없습니다.

나는

ORA-01400: cannot insert NULL into ("SYSTEM", "OLDBOOKING", HOTELNO") 

왜이와 내가 그것을 어떻게 해결할 수 SQLPLUS cmd를 라인에서 오류가 계속? old_booking 표는 'NOT 제거하여 널 (null) 값을 허용하는

INSERT INTO oldBooking(hotelNo, guestNo, dateTo) 
SELECT hotelNo, guestNo, dateTo FROM Booking; 

또한 테이블 정의를 변경할 수 있습니다 : 당신이 당신의 삽입 문에서 NOT NULL 열을 추가 할 필요 최소한

CREATE TABLE Booking 
(hotelNo  CHAR(8)   NOT NULL 
,guestNo  CHAR (8)  NOT NULL 
,dateFrom  DATE 
,dateTo   DATE 
,CONSTRAINT FkhotelNo2 FOREIGN KEY (hotelNo) REFERENCES Hotel(hotelNo) 
,CONSTRAINT FkguestNo FOREIGN KEY (guestNo) REFERENCES Guest (guestNo) 
); 

CREATE TABLE Old_Booking 
(hotelNo  CHAR(8)   NOT NULL 
,guestNo  CHAR (8)  NOT NULL 
,dateFrom  DATE 
,dateTo   DATE 
); 

INSERT INTO oldBooking(dateTo) 
SELECT dateTo FROM Booking; 
+0

최소한 insert 문에 not null 열을 추가해야합니다. INSERT INTO oldBooking (hotelNo, guestNo, dateTo) SELECT hotelNo, guestNo, dateTo FROM Booking. – dadde

+0

hotelNo 및 guestNo에서 'NOT NULL'문을 제거하여 Null 값을 허용하도록 old_booking 테이블의 테이블 정의를 변경할 수도 있습니다. – dadde

+0

@dadde 감사합니다! – Rgoat

답변

1

hotelNo 및 guestNo에 'NULL'문이 있습니다.