Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ORA-02270: no matching unique or primary key for this column-list

8.9K
11 декабря 2011 года
Apach47
130 / / 14.06.2010
Доброго времени суток.
Прошу подсказать почему у меня не получается создать/модифицировать таблицу следующим образом.
Имеем таблицу teacher
 
Код:
SQL> create table teacher(family varchar2(50 char) not null, name varchar2(50 char) not null, thidname varchar2(50 char), elementary_school varchar2(3 char), home_addres varchar2(60 char), telephone varchar(20 char), primary key(family, name);


Таблица с такой структурой создается нормально, но далее
 
Код:
SQL> create table classes (class_munber integer not null, class_literal varchar2(3 char) not null, name_homeroom varchar2(50 char)  references teacher(name), family_homeroom varchar2(50 char)  references teacher(family), primary key(class_number, class_literal));


при попытке создать такую таблицу я получаю ошибку "ORA-02270: no matching unique or primary key for this column-list". Доки смотрел, ничего не сказали))
Из серии танцев с бубном пробовал еще такое
 
Код:
SQL> create table classes (class_munber integer not null, class_literal varchar2(3 char) not null, name_homeroom varchar2(50 char) not null  references teacher(name), family_homeroom varchar2(50 char) not null references teacher(family), primary key(name_homeroom, family_homeroom, class_number, class_literal));


но это ничего не дало, выскакивает та же ошибка.
Объясните пожалуйста из-за чего собственно она появляется? Что не так в моих таблицах?

P.S.: работаю с Oracle XE 10g через sql*Plus
8.9K
11 декабря 2011 года
Apach47
130 / / 14.06.2010
Запрос такого вида тоже не был принят. Появилась та же самая ошибка
 
Код:
SQL> create table classes (class_munber integer, class_literal varchar2(3 char),
name_homeroom varchar2(50 char) not null references teacher(name), family_homero
om varchar2(50 char) not null references teacher(family), primary key(name_homer
oom, family_homeroom));
412
11 декабря 2011 года
grgdvo
323 / / 04.07.2007
Дока здесь

Может так:
 
Код:
create table classes (
  class_number integer,
  class_literal varchar2(3),
  name_homeroom varchar2(50) not null references teacher(name),
  family_homeroom varchar2(50) not null references teacher(family),
  constraint classes_xpk primary key (name_homeroom, family_homeroom)
);
8.2K
12 декабря 2011 года
Ora-cool
211 / / 20.09.2007
Внешний ключ должен ссылаться либо на primary либо на unique key мастер-таблицы. В вашем случае primary key таблицы teacher составной (family, name), поэтому и внешний ключ в таблице classes должен быть составным и содержать 2 поля, ссылающиеся на соответствующие поля таблицы teacher.
8.9K
14 декабря 2011 года
Apach47
130 / / 14.06.2010
grgdvo, Ora-cool, действительно. Спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог