Автоматическое обновление и удаление ключей
Внешние ключи позволяют обеспечить целостность вновь добавленных записей. А если из таблицы, указанной в предложении 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, изменение в главных таблицах может привести к удалению связанных с ними записей без дополнительного предупреждения. Поэтому эти правила нужно предварительно неоднократно проверить.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Сообщение об ошибке. Продолжение.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Сообщение об ошибке | Все о MySQL. Типы таблиц |