Почему представление таблицы не идет? - PullRequest
0 голосов
/ 19 мая 2019

Я новичок в Oracle . Сокращение Oracle live SQL дает готовый код для модели отделов и сотрудников.

Я не понимаю, почему код не просматривает таблицы, хотя я написал оператор select. Я не понимаю протокол выполнения.

ссылка

create table departments (

    name                           varchar2(255) not null,
    location                       varchar2(4000),
    country                        varchar2(4000)
)
;

create table employees (
    department_id                  number
                                   constraint employees_department_id_fk
                                   references departments on delete cascade,
    name                           varchar2(50) not null,
    email                          varchar2(255),
    cost_center                    number,
    date_hired                     date,
    job                            varchar2(255)
)
;


insert into departments (
    name,
    location,
    country
) values (
    'Security',
    'Tanquecitos',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Travel',
    'Sugarloaf',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Office of the CEO',
    'Dale City',
    'United States'
);

insert into departments (
    name,
    location,
    country
) values (
    'Security',
    'Grosvenor',
    'United States'
);

commit;
-- load data

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Gricelda Luebbers',
    'gricelda.luebbers@aaab.com',
    20,
    sysdate - 94,
    'Systems Designer'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Dean Bollich',
    'dean.bollich@aaac.com',
    11,
    sysdate - 74,
    'Legal Assistant'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Milo Manoni',
    'milo.manoni@aaad.com',
    21,
    sysdate - 68,
    'Systems Designer'
);

insert into employees (
    department_id,
    name,
    email,
    cost_center,
    date_hired,
    job
) values (
    1,
    'Laurice Karl',
    'laurice.karl@aaae.com',
    78,
    sysdate - 73,
    'Programmer'
);

select
    departments.name                                   department_name,
    departments.location                               location,
    departments.country                                country,
    employees.name                                     employee_name,
    employees.email                                    email,
    employees.cost_center                              cost_center,
    employees.date_hired                               date_hired,
    employees.job                                      job
from
    departments,
    employees;

Это вывод, который они показывают после запуска:

Table created.

ORA-02268: referenced table does not have a primary key

1 row(s) inserted.

1 row(s) inserted.

1 row(s) inserted.

1 row(s) inserted.

Statement processed.

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

ORA-00942: table or view does not exist

1 Ответ

3 голосов
/ 19 мая 2019

Ваша таблица departments не имеет первичного ключа, поэтому ограничение в таблице employees выдает ошибку, и таблица employees не создается.

Вы должны провести рефакторинг своего кода SQL, добавив надлежащий первичный ключ к соответствующей таблице и правильно управляя значением вставки:

create table departments (
id                             numeric(10) not null
name                           varchar2(255) not null,
location                       varchar2(4000),
country                        varchar2(4000),
CONSTRAINT id PRIMARY KEY (id)
)
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...