经过研究,我发现了一种使用此示例语法将数据插入表中的方法:
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
命令来插入数据。
答案 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