Как я могу исправить свои таблицы, чтобы они работали? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть все данные, введенные в мою таблицу, но когда я запускаю их в SQL, я получаю это сообщение:

ОШИБКА в строке 1: ORA-02291: ограничение целостности (SYSTEM.SYS_C008579) нарушен - родительский ключ не найден

create table B_C_MAP (
B_C_ID INTEGER PRIMARY KEY,
B_ID    integer references BUSINESS(B_ID),
C_ID    integer references CATEGORY(C_ID)
);

insert into BUSINESS values (201, 'Gainesville', 'Bonefish', 301, 'BF Management');
insert into BUSINESS values (202, 'Manassas', 'Target', 302, 'Target Management');
insert into BUSINESS values (203, 'Centreville', 'Trader Joes', 302, 'TJ Management');
insert into BUSINESS values (204, 'Gainesville,', 303, 'VA Tire and Auto', 'TA Management');
insert into BUSINESS values (205, 'Manassas', 'Okras', 301, 'Okras Management');
insert into BUSINESS values (206, 'Gainesville', 'Giant', 302, 'Giant Management');
insert into BUSINESS values (207, 'Centreville', 'Kemper Carpet', 303, 'KC Management');
insert into BUSINESS values (208, 'Manassas', 'Imperial Auto', 303, 'IA Management');
insert into BUSINESS values (209, 'Gainesville', 'Glory Days Grille', 301, 'GDG Management');
insert into BUSINESS values (210, 'Manassas', 'Cracker Barrel', 301, 'SW Management');

insert into CATEGORY values (301, 'Food');
insert into CATEGORY values (302, 'Retail');
insert into CATEGORY values (303, 'Service');

insert into B_C_MAP values (401, 301,201);
insert into B_C_MAP values (402, 301, 205);
insert into B_C_MAP values (403, 301,209);
insert into B_C_MAP values (404, 301,210);
insert into B_C_MAP values (405, 302,202);
insert into B_C_MAP values (406, 302,203);
insert into B_C_MAP values (407, 302,206);
insert into B_C_MAP values (408,303,204);
insert into B_C_MAP values (409, 303,207);
insert into B_C_MAP values (410, 303,208);

Ответы [ 4 ]

2 голосов
/ 06 мая 2019

Привыкайте перечислять поля на вкладке, для которых у вас есть значения, чтобы не пытаться вводить их не в том месте, как вы.

insert into B_C_MAP(b_c_id, c_id, b_id) values (401, 301,201);

или

insert into B_C_MAP(b_c_id, b_id, c_id) values (401, 201, 301);
1 голос
/ 06 мая 2019

Объяснение: Похоже, вы изменили свое значение для Бизнеса и Категории в своих инструкциях по вставке B_C_MAP.

Ссылки: http://www.dba -oracle.com / t_ora_02291_integrity_constraint_string_string_violated_parent_key_not_found.htm

Пример:

B_ID = 201, 202, 203, 204, 205, 206, 207, 208, 209, 210
C_ID = 301, 302, 303

insert into B_C_MAP values (B_C_ID, B_ID, C_ID);
insert into B_C_MAP values (401, 201, 301);

Фиксированные операторы вставки:

insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (401, 201, 301);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (402, 205, 301);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (403, 209, 301);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (404, 210, 301);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (405, 202, 302);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (406, 203, 302);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (407, 206, 302);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (408, 204, 303);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (409, 207, 303);
insert into B_C_MAP (B_C_ID, B_ID, C_ID) values (410, 208, 303);
0 голосов
/ 06 мая 2019

Я не вижу структуру категорий и бизнес-таблиц, но кажется, что вставки категорий должны быть выполнены до бизнес-таблиц

0 голосов
/ 06 мая 2019

вставить в значения B_C_MAP (B_C_ID, C_ID, B_ID) (401, 301,201);

Вы пишете поменяемые значения. Нет BUSINESS со значением первичного ключа 301. Вот почему Oracle отказывается вставлять строку.

Решение № 1 (предпочтительно и безопасно) :

insert into B_C_MAP (B_C_ID, C_ID, B_ID) values (401, 301, 201);

Решение № 2 (ленивый и небезопасный) :

insert into B_C_MAP values (401, 201, 301);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...