Что нужно для создания внешнего ключа(FOREIGN KEY) в MySQL

Все или почти все слышали что есть такое понятие как внешний ключ, но не все его умеют использовать. Поэтому я выкину теорию “зачем это нужно” и “на сколько это полезно” и сразу перейду к практике. Давайте разберемся что нам необходимо для создания внешнего ключа в MySQL:

1. Движок(engine) обеих связываемых таблиц должен быть InnoDB.

2. Связываемые поля должны быть проиндексированы и иметь один тип ( размер и знак должен быть один )

Из основного это все.

Теперь синтаксис взятый из официального мануала:

[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (index_col_name, ...)
    REFERENCES tbl_name (index_col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION

Где:

symbol - имя ключа
index_name - имя поля в таблице, которое мы хотим сделать ключом tbl_name - таблица, с которой осуществляем связывание index_col_name - имя поля, с которым связываем наш ключ reference_option - какое действие осуществляем в случае чего

Для пользователей phpmyadmin все это можно осуществить кнопочкой Relation view в структуре таблицы, в которой хотим задать внешний ключ.

Дальше только выбрать что мы с чем хотим связать и какие действия выполнять в случае удаления или обновления одной записи из связки.