MySQL 5.0. Библиотека программиста | страница 39
• ON UPDATE CASCADE – каскадное обновление значений внешнего ключа дочерней таблицы (вместе со значением первичного ключа в строке родительской таблицы изменяется значение внешнего ключа во всех ссылающихся на нее строках дочерней таблицы);
• ON UPDATE SET NULL – обнуление значений внешнего ключа в соответствующих строках дочерней таблицы;
• ON UPDATE RECTRICT или ON UPDATE NO ACTION (в MySQL эти выражения являются синонимами) – запрет изменения значений первичного ключа в строках родительской таблицы при наличии ссылающихся на них строк дочерней таблицы.
Если вы не задали правило поддержания целостности для операций изменения, по умолчанию используется правило ON UPDATE RECTRICT.
Для столбцов внешнего ключа автоматически создается индекс, поэтому проверки значений внешних ключей в ходе контроля целостности связи выполняются быстро.
Пример определения внешнего ключа в таблице Orders (Заказы) (см. листинг 2.4):FOREIGN KEY (product_id) REFERENCES Products (id) ON DELETE RESTRICT ON UPDATE CASCADE
Это выражение означает, что столбец product_id (товар) таблицы Orders является внешним ключом, который ссылается на столбец id (идентификатор) родительской таблицы Products (Товары). При этом запрещается удаление строки таблицы Products, если на нее ссылается хотя бы одна строка таблицы Orders, а изменение значения в столбце id таблицы Products приводит к автоматическому обновлению значений столбца product_id таблицы Orders. Итак, мы изучили индексы и ключи, которые можно настроить при создании таблицы. Наконец, рассмотрим последнюю составляющую команды создания таблицы, а именно опциональные свойства таблицы. Опциональные свойства таблицы
При создании таблицы указывать опциональные свойства не обязательно. Тем не менее, рассмотрим некоторые свойства, которые вы можете задать для таблицы.
• ENGINE <Тип таблицы>.
Тип таблицы является наиболее важным из опциональных свойств таблицы. В MySQL существует множество типов таблиц, каждый из которых лучше всего подходит для решения определенной задачи. Основными типами таблиц являются InnoDB и MyISAM.
Таблицы InnoDB обеспечивают поддержку транзакций (транзакции мы рассматривали в главе 1, когда обсуждали понятие целостности данных) и блокировок отдельных строк, благодаря которым обеспечивается высокая производительность операций изменения данных в многопользовательском режиме.
Кроме того, как мы увидели в предыдущем подразделе, в таблицах InnoDB можно настроить внешние ключи для поддержания целостности связей между таблицами.