Получение ошибки «ORA-00942: таблица или представление не существует» - PullRequest
0 голосов
/ 12 мая 2019

Я использую платформу Oracle APEX, когда я запускаю свой код скрипта, я снова и снова получаю ту же ошибку

ORA-00942: таблица или представление не существует

Пожалуйста, помогите мне найти причину ошибки.

create table roles
(
    "role_id" number(5,0) not null,
    "name" varchar2(20) not null,
    constraint "rle_pk" primary key ("role_id")
);

create table users
(
    "user_id" number(5,0) not null,
    "first_name" varchar2(15) not null,
    "last_name" varchar2(15) not null,
    "contact_number" number(15,0) not null,
    "address" varchar2(30) not null,
    "RLE_id" number(5,0) not null,
    constraint "usr_pk" primary key ("user_id")
);

alter table "users" 
      add constraint "usr_rle_fk" 
          foreign key ("RLE_id") references "roles"("role_id");

Ответы [ 2 ]

4 голосов
/ 12 мая 2019

Когда вы пишете оператор CREATE TABLE ... БЕЗ использования "двойных кавычек" для имени таблицы, тогда имя таблицы будет сохраняться с использованием всех букв UPPERCASE.

Когда вы используете «двойные кавычки», вы вводите регистр символов. Вот почему оператор ALTER TABLE не выполняется (пользователи <> ПОЛЬЗОВАТЕЛИ, роли <> РОЛИ). Вам нужно написать:

alter table "USERS"  
add constraint "usr_rle_fk" foreign key ("RLE_id")
references "ROLES"("role_id");

Лучше: избегайте двойных кавычек при написании кода DDL, например:

SQL> create table roles
  2  (
  3   role_id number(5,0) not null,
  4      name varchar2(20) not null,
  5      constraint rle_pk primary key (role_id)
  6  );

Table ROLES created.  -- notice: table name all upper case

SQL> 
SQL> create table users
  2  (
  3      user_id number(5,0) not null,
  4      first_name varchar2(15) not null,
  5      last_name varchar2(15) not null,
  6      contact_number number(15,0) not null,
  7      address varchar2(30) not null,
  8      RLE_id number(5,0) not null,
  9      constraint usr_pk primary key (user_id)
 10  );

Table USERS created. -- notice: table name all upper case

SQL> 
SQL> alter table users add constraint usr_rle_fk foreign key (RLE_id)
  2  references roles(role_id);

Table USERS altered.

При работе с APEX (версия 19, с помощью SQL Workshop / SQL Commands) вы видите только сообщение «Таблица создана» при создании таблицы, но не имя таблицы как таковое.

* +1012 *enter image description here
1 голос
/ 12 мая 2019

Рассмотрим ваш оператор CREATE TABLE ...

create table users

... с вашим оператором ALTER TABLE:

alter table "users" 

Вы используете двойные кавычки во втором утверждениипричина появления ORA-00942.Двойные кавычки делают идентификатор чувствительным к регистру .Следовательно, USERS не равно "users".Удалите эти двойные кавычки, и проблема исчезнет.

...