将数据插入表ORACLE APEX(出现错误,板载新手)

时间:2019-02-27 20:23:49

标签: oracle

经过研究,我发现了一种使用此示例语法将数据插入表中的方法:

INSERT INTO room_type (id, max_capacity, description)

 WITH names AS ( 

SELECT 1, 2,     'Single - Standard room for a single person'  FROM dual UNION ALL 

SELECT 2, 2,     'Double - standard room for 2 persons'  FROM dual UNION ALL 

SELECT 3, 3,     'Triple - standard room for 3 persons'  FROM dual UNION ALL 

SELECT 4, 4,     'QUAD - Standard room for 4 people'  FROM dual UNION ALL 

SELECT 6, 2,     'KING - Room with king sized bed, single or double'  FROM dual UNION ALL 

SELECT 10, 4,     'Apartments - Room for a longer stay(Open kitchens, dryer, washer)'  FROM dual 

)
  SELECT * FROM names

此代码可以正常工作,并且所有表都已更新。然后,我当然决定继续并尝试使用一些类似的代码更新另一个表,但是它没有通过,并给了我一条错误消息

我已经创建了整个列表,但是作为测试示例,我有这段代码,它只有很少的条目

INSERT INTO room (id, room_type_id, number, name) 
  WITH names AS ( 

 SELECT 2, 1, 102, 'Single 102'  FROM dual UNION ALL 

 SELECT 3, 1, 103, 'Single 103' FROM dual 
  ) 

SELECT * FROM names

即使两个表都相同,唯一的区别是room.room_type_id是它的外键。

我总是收到错误消息

  

ORA-01747:无效的user.table.column,table.column或列规范

试图修改列名,例如添加引号,但又收到另一条错误消息,我只需要了解第一个表为什么起作用而第二个表不起作用的原因,我尝试删除room_type_id,但仍然如此。

我需要这个来创建酒店数据库项目,并且要求使用INSERT命令来插入数据。

1 个答案:

答案 0 :(得分:0)

这是您要插入的表格:

SQL> create table room (id number, room_type_id number, number number, name varchar2(10));
create table room (id number, room_type_id number, number number, name varchar2(10))
                                                   *
ERROR at line 1:
ORA-00904: : invalid identifier

看看星号指向什么?列名不能number,它是保留字(用于数据类型)。将其更改为c_number


假装您从未听说过:有一种 命名列号的方法,但我当然不建议这样做:将其名称括在双引号中,例如

SQL> create table room ("number" number);

Table created.

,但是每次使用时都必须将其括在双引号中,注意字母大小写,例如

SQL> insert into room ("number") values (1);

1 row created.

SQL> insert into room ("NUMBER") values (1);
insert into room ("NUMBER") values (1)
                  *
ERROR at line 1:
ORA-00904: "NUMBER": invalid identifier