1.7.3.2外部关键约束

 

外键使您可以跨表交叉引用相关数据, 外键约束有助于保持此扩展数据的一致性。

MySQL支持ON UPDATEON DELETE外键的引用 CREATE TABLE和 ALTER TABLE声明。可用参照动作RESTRICT, CASCADESET NULL,和 NO ACTION(默认值)。

SET DEFAULTMySQL服务器也支持,但是当前被拒绝为无效服务器 InnoDB由于MySQL不支持延迟约束检查,NO ACTION因此将其视为RESTRICT有关MySQL支持的外键确切语法,请参见 第13.1.20.5节“外键约束”

MATCH FULL,,MATCH PARTIALMATCH SIMPLE被允许,但应避免使用它们,因为它们会导致MySQL Server忽略同一语句中使用的任何ON DELETEor ON UPDATE子句。MATCHoptions在MySQL中没有任何其他作用,实际上会MATCH SIMPLE全时强制执行语义。

MySQL要求对外键列进行索引;如果创建具有外键约束但在给定列上没有索引的表,则会创建一个索引。

您可以从INFORMATION_SCHEMA.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

InnoDBNDB表支持外键。

原文地址:https://www.cnblogs.com/owlin/p/13729253.html