Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица с внешним ключом на себя 
V
    Опции темы
_nIx_
Дата 7.5.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 2.9.2006

Репутация: нет
Всего: нет



В общем такая вот таблица(взята из учебника) не хочет создаваться... 
Код

CREATE TABLE catalog (
   id_catalog INT(8) NOT NULL AUTO_INCREMENT,
   name TINYTEXT NOT NULL,
   description TINYTEXT NOT NULL,
   pos SMALLINT(3) NOT NULL default '0',
   hide ENUM('show', 'hide') NOT NULL DEFAULT 'show',
   id_parent INT(8) NOT NULL DEFAULT '0',
   PRIMARY KEY(id_catalog),
   FOREIGN KEY(id_parent) REFERENCES catalog(id_parent)
) TYPE = INNODB;

Мне кажется,из-за того что нельзя ставить внешний ключ на таблицу,которая еще не создана... Как выйти из ситуации?  smile 
PM MAIL   Вверх
Glip
Дата 7.5.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 3
Всего: 18



можно попробовать сначала сделать без парент а потом добавить через alter table
или почитать на предмет транзакций.


--------------------
user posted image
PM MAIL   Вверх
_nIx_
Дата 7.5.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 2.9.2006

Репутация: нет
Всего: нет



Попробовал сначала добавить данные,на которые будут ссылаца внешние ключи в последствии,затем добавление 
Код

ALTER TABLE catalog3 ADD FOREIGN KEY (id_parent) REFERENCES catalog3(id_parent);

все равно выдает ошибку...  smile  smile 
PM MAIL   Вверх
Kesh
Дата 7.5.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Это в каком учебнике было...
http://dev.mysql.com/doc/refman/5.0/en/inn...onstraints.html
Вот тут внешние ключи только на другие таблицы ссылаются, да и то, куча ограничений...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Glip
Дата 7.5.2007, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 3
Всего: 18



Цитата(_nIx_ @  7.5.2007,  17:07 Найти цитируемый пост)
Попробовал сначала добавить данные,на которые будут ссылаца внешние ключи в последствии,затем добавление 

нет, а если пустую таблицу. только поле парента не создавать сразу а потом добавить?

это со страницы по ссылке Kesh
Цитата

Remember to create the required indexes first. You can also add a self-referential foreign key constraint to a table using ALTER TABLE.


то есть 
Код

CREATE TABLE catalog (
   id_catalog INT(8) NOT NULL AUTO_INCREMENT,
   name TINYTEXT NOT NULL,
   description TINYTEXT NOT NULL,
   pos SMALLINT(3) NOT NULL default '0',
   hide ENUM('show', 'hide') NOT NULL DEFAULT 'show',
   id_parent INT(8) NOT NULL DEFAULT '0',
   PRIMARY KEY(id_catalog),
) TYPE = INNODB;

ALTER TABLE catalog ADD FOREIGN KEY (id_parent) REFERENCES catalog(id_catalog);


Это сообщение отредактировал(а) Glip - 7.5.2007, 18:11


--------------------
user posted image
PM MAIL   Вверх
Glip
Дата 7.5.2007, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 3
Всего: 18



Цитата(_nIx_ @  7.5.2007,  17:07 Найти цитируемый пост)


Код

ALTER TABLE catalog3 ADD FOREIGN KEY (id_parent) REFERENCES catalog3(id_parent);

все равно выдает ошибку...     


правильно, потому что не REFERENCES catalog3(id_parent); a REFERENCES catalog3(id_catalog);


--------------------
user posted image
PM MAIL   Вверх
_nIx_
Дата 7.5.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 2.9.2006

Репутация: нет
Всего: нет



Все,разобралься,всем спасибо....  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1190 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.