Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
FOREIGN KEYS в MySQL для таблиц "InnoDB" (Сергей) 08/05/2004 - 19:20:42
      Re: FOREIGN KEYS в MySQL для таблиц (Marat_L) 10/05/2004 - 08:19:05



From: Сергей - 08/05/2004 - 19:20:42
Subject:FOREIGN KEYS в MySQL для таблиц "InnoDB"
-----------------
Есть таблица:

CREATE TABLE `s_obj_to_obj` (
`PARENT_TYPE_ID` int(11) NOT NULL,
`PARENT_ID` int(11) NOT NULL,
`CHILD_TYPE_ID` int(11) NOT NULL,
`CHILD_ID` int(11) NOT NULL,
`POS1` int(11) default NULL,
`LEVEL1` int(11) default NULL,
`PAGE_ID` int(11) default NULL,
PRIMARY KEY (`PARENT_TYPE_ID`,`PARENT_ID`,`CHILD_TYPE_ID`,`CHILD_ID`)
) TYPE=InnoDB;

Необходимо сделать ссылочные ключи на первичный ключ (ключ состоит из 2х полей OBJ_TYPE_ID и PKEY) другой таблицы следующим образом:

S_OBJ_TO_OBJ.PARENT_TYPE_ID -> A_SIMPLE.OBJ_TYPE_ID
S_OBJ_TO_OBJ.PARENT_ID -> A_SIMPLE.PKEY

и

S_OBJ_TO_OBJ.CHILD_TYPE_ID -> A_SIMPLE.OBJ_TYPE_ID
S_OBJ_TO_OBJ.CHILD_ID -> A_SIMPLE.PKEY

sql-скрипт будет:

ALTER TABLE S_OBJ_TO_OBJ ADD CONSTRAINT FK_S_OBJ_TO_OBJ00 FOREIGN KEY (PARENT_TYPE_ID, PARENT_ID) REFERENCES A_SIMPLE (OBJ_TYPE_ID, PKEY) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE S_OBJ_TO_OBJ ADD CONSTRAINT FK_S_OBJ_TO_OBJ01 FOREIGN KEY (CHILD_TYPE_ID, CHILD_ID) REFERENCES A_SIMPLE (OBJ_TYPE_ID, PKEY) ON DELETE CASCADE ON UPDATE CASCADE;

после выполнения 1-й "ALTER" срабатывает, на втором выдается:

#1005 - Can't create table '.\kernel35\#sql-4e8_20e.frm' (errno: 150)

Изменил структуру S_OBJ_TO_OBJ:

первичный ключ: поля PARENT_TYPE_ID и PARENT_ID
а на поля CHILD_TYPE_ID и CHILD_ID поставил индексы

Задаю внешне ключи:

ALTER TABLE S_OBJ_TO_OBJ ADD CONSTRAINT FK_S_OBJ_TO_OBJ00 FOREIGN KEY (PARENT_TYPE_ID, PARENT_ID) REFERENCES A_SIMPLE (OBJ_TYPE_ID, PKEY) ON DELETE CASCADE ON UPDATE CASCADE -выполняется

ALTER TABLE S_OBJ_TO_OBJ ADD CONSTRAINT FK_S_OBJ_TO_OBJ01 FOREIGN KEY ( CHILD_TYPE_ID ) REFERENCES A_SIMPLE( OBJ_TYPE_ID ) ON DELETE CASCADE ON UPDATE CASCADE - выполняется

ALTER TABLE S_OBJ_TO_OBJ ADD CONSTRAINT FK_S_OBJ_TO_OBJ01 FOREIGN KEY ( CHILD_ID ) REFERENCES A_SIMPLE ( PKEY ) ON DELETE CASCADE ON UPDATE CASCADE - выдает то же самое сообщение.

Подскажите, пожалуйста, в чем ошибка? В двух или более связях/ограничениях может использоваться один и тот же индекс?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
14596



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |