我正在基于旧的“预订”创建一个新表“old_booking”,并将旧日期表中的“dateTo”行插入到新表中。
我一直在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 :(得分:2)
至少需要在insert语句中添加not null列:
INSERT INTO oldBooking(hotelNo, guestNo, dateTo)
SELECT hotelNo, guestNo, dateTo FROM Booking;
您还可以通过删除hotelNo和guestNo上的“NOT NULL”语句来更改old_booking表的表定义以允许空值。