Rechercher dans le manuel MySQL
1.8.3.2 FOREIGN KEY Constraints
Foreign keys let you cross-reference related data across tables, and foreign key constraints help keep this spread-out data consistent.
MySQL supports ON UPDATE
and ON
DELETE
foreign key references in
CREATE TABLE
and
ALTER TABLE
statements. The
available referential actions are RESTRICT
(the default), CASCADE
, SET
NULL
, and NO ACTION
.
SET DEFAULT
is also supported by the MySQL
Server but is currently rejected as invalid by
InnoDB
. Since MySQL does not
support deferred constraint checking, NO
ACTION
is treated as RESTRICT
.
For the exact syntax supported by MySQL for foreign keys, see
Section 13.1.20.6, “Using FOREIGN KEY Constraints”.
MATCH FULL
, MATCH
PARTIAL
, and MATCH SIMPLE
are
allowed, but their use should be avoided, as they cause the
MySQL Server to ignore any ON DELETE
or
ON UPDATE
clause used in the same
statement. MATCH
options do not have any
other effect in MySQL, which in effect enforces MATCH
SIMPLE
semantics full-time.
MySQL requires that foreign key columns be indexed; if you create a table with a foreign key constraint but no index on a given column, an index is created.
You can obtain information about foreign keys from the
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
table. An example of a query against this table is shown here:
- > FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
- +--------------+---------------+-------------+-----------------+
- | 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 |
- +--------------+---------------+-------------+-----------------+
Information about foreign keys on InnoDB
tables can also be found in the
INNODB_FOREIGN
and
INNODB_FOREIGN_COLS
tables, in
the INFORMATION_SCHEMA
database.
InnoDB
and NDB
tables
support foreign keys. See
Section 15.6.1.5, “InnoDB and FOREIGN KEY Constraints”, for
information specific to foreign key support in
InnoDB
.
Traduction non disponible
Le manuel MySQL n'est pas encore traduit en français sur l'infobrol. Seule la version anglaise est disponible pour l'instant.
Document créé le 26/06/2006, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/mysql-rf-constraint-foreign-key.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.