Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 09:35   #1
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию Конструкция CONSTRAINT FOREIGN KEY REFERENCES в MySQL

Может кто подскажет насколько принципиальна конструкция CONSTRAINT FOREIGN KEY REFERENCES в БД MySQL.

В теории вышеуказанная конструкция создает внешний ключ.
Но если пробовать реализовать это в MySQL то созданная таблица вместо ключей СУБД просто индексирует поля

В ситуациях построения супертипов, когда необходимо чтобы одно поле было как первичным ключом (PRIMARY KEY), так и внешним (FOREIGN KEY)

Пример:
Код:
...
  PRIMARY KEY (`id`),
  CONSTRAINT `FK` FOREIGN KEY (`id`)
  REFERENCES GM.ORG (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
...
Создается только первичный ключ.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 02.06.2011, 11:30   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Внешние ключи поддерживает только InnoDB, проверьте, вероятно у вас MyISAM
Cronos20 вне форума Ответить с цитированием
Старый 02.06.2011, 12:21   #3
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

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

Когда попробовал переделать таблицы и указал InnoDB

Код:
CREATE TABLE GM.TEST(
  id INT(11) NOT NULL AUTO_INCREMENT,
  ...
)
ENGINE = InnoDB
То опять же база ошибок не дала, но вновь созданная таблица создалась всеравно под MyISAM.

Как быть ?
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 02.06.2011, 12:37   #4
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

В Хабре натолкнулся:
Цитата:
Oracle изменяет состав бесплатного пакета MySQL.
Теперь MySQL Classic Edition лишается поддержки InnoDB, а в след за ним внешних ключей, транзакций и прочих плюшек. Теперь поддержка данных приятностей будет стоить от 2000$ в год и доступна с версии MySQL Standard Edition.
Печаль
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Старый 02.06.2011, 17:32   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Ну теперь есть отпочковавшиеся ветви от Mysql типа MariaDB ... посмотрите, может пригодится)

//После редактирования .... там же на Хабре кстати это и оказалось написано)

Последний раз редактировалось Cronos20; 02.06.2011 в 17:35.
Cronos20 вне форума Ответить с цитированием
Старый 03.06.2011, 07:55   #6
Phantom
Пользователь
 
Аватар для Phantom
 
Регистрация: 08.06.2007
Сообщений: 59
По умолчанию

Да уже читал ...
Но как, то меня смущают методы подключения к ней через Delphi или тот же PHP. Подойдут ли старые процедуры подключения к классической MySQL.

И в конечном итоге, что выбирать отщепившихся энтузиастов (MariaDB) или все тех же энтузиастов но ныне очень популярных в лице PostgreSQL.
Кто знал, тот знал точно. Кто не любит свет, тот и живет ночью.
Phantom вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Violation of primary key constraint .Cannot insert duplicate key in object Как избавиться? SlimFIT БД в Delphi 4 28.12.2010 06:46
Tools-References terger Microsoft Office Excel 2 23.04.2010 22:32
Ошибка создания foreign key Geddar SQL, базы данных 6 19.05.2009 20:58
violation of FOREIGN KEY KiSH333 БД в Delphi 1 17.02.2009 16:05