ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Сообщение об ошибке. Продолжение.


28-12-2009

Автоматическое обновление и удаление ключей
Внешние ключи позволяют обеспечить целостность вновь добавленных записей. А если из таблицы, указанной в предложении REFERENCES, удаляется запись? Что происходит с записями в подчиненных таблицах, использующих это значение в роли внешнего ключа?
Очевидно, что эти записи будут также удалены. В противном случае утерянные записи засорят вашу базу данных. Начиная с MySQL 3.23.50 эта задача существенно упрощается, что позволяет добавить предложение ON DELETE к модификатору FOREIGN KEY ... REFERENCES, который недвусмысленно указывает, что нужно делать серверу базы данных с утерянными записями в такой ситуации.
Рассмотрим следующий пример, в котором категории и товары связаны между собой через идентификатор категории.
Сообщение об ошибке
Предложение ON DELETE CASCADE обеспечивает удаление всех товаров из таблицы articles, связанных с категорией, удаленной из таблицы categories. Это четко видно из следующего фрагмента.
Сообщение об ошибке
Таким образом, при удалении определенной категории, MySQL также автоматически удалит все записи, связанные с этой категорией в связанных таблицах.
В табл. 8.2 представлены четыре ключевые слова, которые могут указываться после предложения ON DELETE.
На заметку
MySQL еще не поддерживает действие модификатора SET DEFAULT в предложениях ON DELETE или ON UPDATE. В других реляционных СУБД модификатор SET DEFAULT используется для задания значения по умолчанию в случае удаления или изменения внешних ключей.
Сообщение об ошибке
Что же происходит при использовании ключевого слова RESTRICT (которое является значением по умолчанию)? MySQL не удаляет запись, которая ссылается на ключ в таблице articles.
Сообщение об ошибке
Начиная с MySQL 4.0.8, можно выполнять эти автоматические действия заданием предложения ON UPDATE, которое работает аналогично предложению ON DELETE. Например, добавление предложения ON UPDATE CASCADE по определению внешних ключей, для MySQL означает, что при модификации первичной таблицы (таблица, на которую делается ссылка при проверке внешних ключей) все записи, использующие текущую таблицу, будут также автоматически модифицированы с новыми значениями, что обеспечит целостность системы.
Это можно показать на примере. Рассмотрим следующие две таблицы, которые связаны между собой с помощью условия ON UPDATE CASCADE по коду штата США.
Сообщение об ошибке
Сообщение об ошибке
Если теперь модифицировать один из кодов в таблице states, предложение ON UPDATE CASCADE обеспечит автоматическую модификацию содержимого всех записей таблицы votes новым кодом штата. Это показано в следующем примере.
Сообщение об ошибке
Я робот
Следует помнить, что автоматизация операций с помощью правил ON UPDATE и ON DELETE может привести к серьезному повреждению данных в том случае, если связи между таблицами с помощью ключей досконально не продуманы. Например, при наличии последовательности связанных между собой таблиц и использовании правил ON DELETE CASCADE, изменение в главных таблицах может привести к удалению связанных с ними записей без дополнительного предупреждения. Поэтому эти правила нужно предварительно неоднократно проверить.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Сообщение об ошибке Все о MySQL. Типы таблиц