【发布时间】:2012-05-30 10:34:27
【问题描述】:
mysql 新手,很多人都告诉过,在 mysql 中创建外键是没有必要的?表关系将如何保持一致并且级联将如何完成?我在哪里可以找到有关在我的 mysql 表上创建的外键的信息? desc table_name 或 show create table_name 未提供任何信息....
【问题讨论】:
mysql 新手,很多人都告诉过,在 mysql 中创建外键是没有必要的?表关系将如何保持一致并且级联将如何完成?我在哪里可以找到有关在我的 mysql 表上创建的外键的信息? desc table_name 或 show create table_name 未提供任何信息....
【问题讨论】:
MySQL 中的外键仅适用于 InnoDB 表。他们确实出现在SHOW CREATE TABLE。您可能实际上没有定义外键,因为 MySQL 默默地忽略 column type REFERENCES othertable(column) 语法;只有单独的FOREIGN KEY (column) REFERENCES othertable(column) 外键定义对CREATE TABLE 有效。
相关阅读:CREATE TABLE in MySQL docs(搜索“内联引用规范”)
【讨论】:
CREATE TABLE 语句中定义外键有两种方法:在列规范本身中(inline),以及作为单独的FOREIGN KEY 定义。两者都被接受(不会导致任何错误),但内联定义被忽略,因此您必须使用单独的 FOREIGN KEY 定义,或者您必须在创建表之后添加外键。