MySQL 8.4 參考手冊  /  ...  /  FOREIGN KEY 限制條件

1.7.3.2 FOREIGN KEY 限制條件

外鍵讓您可以在表格之間交叉參照相關資料,而外鍵限制條件有助於保持這些分散資料的一致性。

MySQL 在 CREATE TABLEALTER TABLE 陳述式中支援 ON UPDATEON DELETE 外鍵參考。可用的參考動作為 RESTRICTCASCADESET NULLNO ACTION(預設值)。

MySQL 伺服器也支援 SET DEFAULT,但目前 InnoDB 會將其拒絕為無效。由於 MySQL 不支援延遲限制條件檢查,NO ACTION 會被視為 RESTRICT。如需 MySQL 支援的外鍵確切語法,請參閱 第 15.1.20.5 節,「FOREIGN KEY 限制條件」

允許使用 MATCH FULLMATCH PARTIALMATCH SIMPLE,但應避免使用,因為它們會導致 MySQL 伺服器忽略在同一個陳述式中使用的任何 ON DELETEON 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_FOREIGNINNODB_FOREIGN_COLS 表格中找到。

InnoDBNDB 表格支援外鍵。