Используя синтаксис ключевого слова CONSTRAINT
, мы можем назвать ограничение в соответствии с выбранным соглашением, вместо того, чтобы InnoDB использовал назначенное системой имя.
Это единственное отличие.
(Смущает, что синтаксис для отбрасывания ограничения внешнего ключа не допускает ключевое слово CONSTRAINT
, нам нужно ALTER TABLE ... DROP FOREIGN KEY foo
, где foo
- имя ограничения внешнего ключа, независимо от того, присвоили ли мы имя или InnoDB сгенерировал его.)
Да, InnoDB автоматически создает индекс для поддержки внешнего ключа, если подходящий индекс еще не доступен. Если мы определим индекс отдельно (например, используя KEY indexname (id_parent)
, то ограничение внешнего ключа может иметь имя, отличное от индекса.