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
.
Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-constraint-foreign-key.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.