2017-01-21 7 views
1

Я создаю новую таблицу «old_booking» на основе старого «бронирования» и вставки строки «dateTo» в новую таблицу из старой.ORA-01400: не может вставить NULL

Я получаю ошибку в Sqlplus CMD линии

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

почему это и как я могу это исправить?

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: INSERT INTO oldBooking (hotelNo, guestNo, dateTo) SELECT hotelNo, guestNo, dateTo FROM Booking. – dadde

+0

Вы также можете изменить определение таблицы для таблицы old_booking, чтобы разрешить нулевые значения, удалив инструкции «NOT NULL» на hotelNo и guestNo. – dadde

+0

@dadde спасибо! – Rgoat

ответ

1

Как минимум, вы должны добавить не нулевые столбцы в вставки высказыванием:

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

Вы также можете изменить определение таблицы для old_booking таблицы, чтобы нулевые значения, удаляя «NOT NULL 'заявления на hotelNo и guestNo.