Spec-Zone.ru › MySQL 8.4

1.7.3.2 Ограничения FOREIGN KEY

Внешние ключи позволяют вам осуществлять кросс-ссылку на связанные данные в разных таблицах и помогают поддерживать согласованность этих разбросанных данных.

MySQL поддерживает ON UPDATE и ON DELETE внешние ключи в CREATE TABLE и ALTER TABLE операторах. Доступные действия с ссылками — RESTRICT, CASCADE, SET NULL и NO ACTION (по умолчанию).

SET DEFAULT также поддерживается сервером MySQL, но в настоящее время отклоняется как недопустимое InnoDB. Поскольку MySQL не поддерживает отложенную проверку ограничений, NO ACTION обрабатывается как RESTRICT. Для получения точного синтаксиса, поддерживаемого MySQL для внешних ключей, обратитесь к Раздел 15.1.20.5, «Ограничения FOREIGN KEY».

MATCH FULL, MATCH PARTIAL и MATCH SIMPLE разрешены, но их использование следует избегать, так как они заставляют сервер MySQL игнорировать любой ON DELETE или ON UPDATE клаузу, используемую в том же операторе. MATCH опции не имеют других эффектов в MySQL, что фактически навязывает MATCH SIMPLE семантику постоянно.

MySQL требует, чтобы столбцы внешнего ключа были индексированы; если вы создаёте таблицу с ограничением внешнего ключа, но без индекса на заданном столбце, индекс создаётся.

Вы можете получить информацию о внешних ключах из таблицы схемы данных KEY_COLUMN_USAGE. Здесь показан пример запроса к этой таблице:

mysql> SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME
     > FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
     > WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL;
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| fk1          | myuser        | myuser_id   | f               |
| fk1          | product_order | customer_id | f2              |
| fk1          | product_order | product_id  | f1              |
+--------------+---------------+-------------+-----------------+
3 rows in set (0.01 sec)

Информация о внешних ключах в таблицах InnoDB также может быть найдена в таблицах INNODB_FOREIGN и INNODB_FOREIGN_COLS в базе данных INFORMATION_SCHEMA.

InnoDB и NDB таблицы поддерживают внешние ключи.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/constraint-foreign-key.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API