【问题标题】:ORA-01400: cannot insert NULLORA-01400: 无法插入 NULL
【发布时间】: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 没问题。如果它解决了您的问题,请在下面接受我的回答

标签: sql sqlplus ora-01400


【解决方案1】:

您至少需要在插入语句中添加非空列:

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

您还可以通过删除 hotelNo 和 guestNo 上的“NOT NULL”语句来更改 old_booking 表的表定义以允许空值。

【讨论】:

    猜你喜欢
    • 2018-11-08
    • 2011-08-23
    • 2017-09-01
    • 2013-02-21
    • 2016-08-21
    • 2016-06-21
    • 2015-06-04
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多