经过一些研究,我找到了一种使用以下示例语法将数据插入到表中的方法:
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
命令来插入数据。
发布于 2019-02-28 04:30:38
这是您要插入到的表:
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
看到星号指向什么了吗?列名不能为 be 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
https://stackoverflow.com/questions/54913891
复制相似问题