Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Ограничения внешнего ключа




Для контроля ссылочной целостности в базе данных, необходимо чтобы таблицы были связаны при помощи конструкции FOREIGN KEY, которая имеет вид:

FOREIGN KEY [index_name] (index_col_name, …)
REFERENCES tbl_name (index_col_name,…)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

FOREIGN KEY используется при создании/изменении таблиц-потомков таблицах. Данная конструкция позволяет задать в таблице-потомке внешний ключ с именем index_name на столбцах таблицы, которые перечисляются в круглых скобках. Можно использовать один или несколько столбцов.

Ключевое слово REFERENCES задаёт таблицу-предка tbl_name, на которую будет ссылаться внешний ключ. Один или несколько полей таблицы-предка задаются в круглых скобках.

Необязательные конструкции ON DELETE и ON UPDATE, определяют поведение MySQL при удалении/обновлении записей из таблицы-предка. Допустимые параметры для ключевых слов ON DELETE и ON UPDATE:

· RESTRICT. Если в таблице-потомке существуют записи, ссылающиеся на первичный ключ таблицы-предка, то при удалении или обновлении записей с этим первичным ключом в таблице предке будет возвращена ошибка. Ошибка будет возвращаться до тех пор, пока не останется ни одной ссылки в таблице потомке. В MySQL данный параметр означает то же самое, что и NO ACTION.

· CASCADE. При удалении/обновлении записей в таблице-предке будут также обновлены/удалены записи из таблицы-потомка с существующим первичным ключом.

· SET NULL. При удалении/обновлении записей в таблице-предке записи из таблицы-потомка с существующим первичным ключом будут обновлены на NULL.

· NO ACTION — При удалении/обновлении записей в таблице-предке записи из таблицы-потомка с существующим первичным ключом изменены не будут. В MySQL данный параметр означает то же самое что и RESTRICT.

· SET DEFAULT. Это действие зарезервировано, но не обрабатывается в InnoDB.

В нашем примере FOREIGN KEY следует использовать в таблице content для того, чтобы связать ее с таблицей pages.

На рисунках 173-174 показан процесс добавления FOREIGN KEY в таблице content с помощью визуального интерфейса. Для этого на вкладке «Структура» следует выбрать ссылку «Связи».

Рисунок173 - Процесс добавления FOREIGN KEY

Рисунок 174 - FOREIGN KEY добавлен

После добавления мы можем перейти во вкладку «Дизайнер» нашей базы данных (см. рис. 175), где увидим, что между таблицами установилась связь.

Рисунок 175 – Связь между таблицами pages и content

Изменение столбцов в таблице

Для добавления столбцов используют следующую запись:

ALTER TABLE table_name

ADD column_name datatype

Для удаления столбцов используют следующую запись:

ALTER TABLE table_name

DROP COLUMN column_name

Для изменения типа данных столбцов используют запись:

ALTER TABLE table_name

MODIFY COLUMN column_name datatype

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

ALTER TABLE `pages` ADD `link` VARCHAR(100) NOT NULL AFTER `name`;

Удаление таблиц

Удалить таблицу можно с помощью следующего SQL запроса, где table_name – имя таблицы:

DROP TABLE table_name;

Чтобы удалить таблицу с помощью визуального интерфейса phpMyAdmin, выберем нужную таблицу и перейдем во вкладку «Операции», представленную на рисунке 176. В разделе «Удалить данные или таблицу», выбираем «Удалить таблицу (DROP)».

Если нужно очистить таблицу от данных, но сохранить ее структуру, то используем команду «Очистить таблицу» (TRUNCATE), что соответствует запросу:

TRUNCATE TABLE table_name;

Рисунок 176 - Вкладка «Операции»

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...