Вставка данных в таблицы ORACLE APEX (получение ошибки, новичок на борту) - PullRequest
0 голосов
/ 27 февраля 2019

После некоторых исследований я нашел способ вставить данные в таблицы, используя синтаксис этого примера:

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 голосов
/ 27 февраля 2019

Это таблица, в которую вы вставляете:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...