Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Ограничения внешнего ключа

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Telnet
Отправлено: 15 Марта, 2015 - 17:31:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 223
Дата рег-ции: Май 2011  


Помог: 1 раз(а)




Прочитал я http://www.php.su/mysql/manual/?page=SEC451 здесь но ни чего не понял, что за ограничения за чем они нужны и как ими пользоваться, до этого долгое время использовал только myISAM
А тут решил попробовать использовать внешние ключи, создал их через phpMyAdmin при просмотре дампа увидел там следующее
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. --
  3. -- Структура таблицы `jwqt5_messagestagsxref`
  4. --
  5.  
  6. CREATE TABLE IF NOT EXISTS `jwqt5_messagestagsxref` (
  7.   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'id',
  8.   `tid` int(10) UNSIGNED NOT NULL COMMENT 'tag id',
  9.   `item_id` int(10) UNSIGNED NOT NULL COMMENT 'Item id',
  10.   PRIMARY KEY (`id`),
  11.   KEY `tid` (`tid`),
  12.   KEY `item_id` (`item_id`)
  13. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Table of xref to message tags'  ;
  14.  
  15. --
  16. -- Ограничения внешнего ключа сохраненных таблиц
  17. --
  18.  
  19. --
  20. -- Ограничения внешнего ключа таблицы `jwqt5_messagestagsxref`
  21. --
  22. ALTER TABLE `jwqt5_messagestagsxref`
  23.   ADD CONSTRAINT `jwqt5_messagestagsxref_ibfk_2` FOREIGN KEY (`item_id`) REFERENCES `jwqt5_message` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  24.   ADD CONSTRAINT `jwqt5_messagestagsxref_ibfk_1` FOREIGN KEY (`tid`) REFERENCES `jwqt5_messagestags` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
  25.  

Ограничения внешнего ключа таблицы

если даже я эти 2 поля подчеркнутых красным очисшаю они все равно автоматом заполняются.

Конечно использование здесь таблиц InnoDB не принципиально, и можно было использовать старые хорошо изученные myISAM, но хотелось бы для себя разобраться в этом вопросе.
 
 Top
KingStar
Отправлено: 15 Марта, 2015 - 23:17:36
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




если по русски, то

CASCADE: если обновишь (удалишь) в основной таблице, то и и в таблице (цах), которая ссылается на основную с этими ключами будет обновлена (удалена)


SET NULL: если обновишь (удалишь) в основной таблице, то и и в таблице, которая ссылается на основную с этими ключами будет задано значение NULL

RESTRICT: если какая либо таблица ссылается на основную, и ты попытаешься изменить (удалить) запись из основной, то получишь ошибку, пока вручную не удалишь из ссылающейся
(Добавление)
Цитата:
если даже я эти 2 поля подчеркнутых красным очисшаю они все равно автоматом заполняются.


ссылаться на внешний ключ нужно обязательно, чтобы удалить ограничение - то в первом selecte выбери в списке верхнее (пустое) значение


-----
То что программа работает, не означает что она написана правильно!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB