MySQL 9.0 發行說明
外鍵可讓您在資料表之間交叉參考相關資料,而外鍵限制有助於保持這些分散資料的一致性。
MySQL 在 CREATE TABLE
和 ALTER TABLE
陳述式中支援 ON UPDATE
和 ON DELETE
外鍵參考。可用的參考動作為 RESTRICT
、CASCADE
、SET NULL
和 NO ACTION
(預設值)。
MySQL 伺服器也支援 SET DEFAULT
,但目前 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 要求外鍵欄位必須建立索引;如果您建立的資料表具有外鍵限制,但指定欄位上沒有索引,則會建立索引。
您可以從 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
資料表外鍵的資訊也可以在 INFORMATION_SCHEMA
資料庫中的 INNODB_FOREIGN
和 INNODB_FOREIGN_COLS
表格中找到。
InnoDB
和 NDB
資料表支援外鍵。