【发布时间】:2017-01-21 09:55:28
【问题描述】:
我正在根据旧表“预订”创建一个新表“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;
【问题讨论】:
-
您至少需要在插入语句中添加非空列:INSERT INTO oldBooking(hotelNo, guestNo, dateTo) SELECT hotelNo, guestNo, dateTo FROM Booking。
-
您还可以通过删除 hotelNo 和 guestNo 上的“NOT NULL”语句来更改 old_booking 表的表定义以允许空值。
-
@Rgoat 没问题。如果它解决了您的问题,请在下面接受我的回答