【问题标题】:Am not able to see foreign keys for any table in my mysql database我无法在我的 mysql 数据库中看到任何表的外键
【发布时间】:2012-05-30 10:34:27
【问题描述】:

mysql 新手,很多人都告诉过,在 mysql 中创建外键是没有必要的?表关系将如何保持一致并且级联将如何完成?我在哪里可以找到有关在我的 mysql 表上创建的外键的信息? desc table_name 或 show create table_name 未提供任何信息....

【问题讨论】:

    标签: mysql key cascade


    【解决方案1】:

    MySQL 中的外键仅适用于 InnoDB 表。他们确实出现在SHOW CREATE TABLE。您可能实际上没有定义外键,因为 MySQL 默默地忽略 column type REFERENCES othertable(column) 语法;只有单独的FOREIGN KEY (column) REFERENCES othertable(column) 外键定义对CREATE TABLE 有效。

    相关阅读:CREATE TABLE in MySQL docs(搜索“内联引用规范”)

    【讨论】:

    • 非常感谢,没看懂“ MySQL 默默地忽略列类型 REFERENCES othertable(column) 语法;只有单独的 FOREIGN KEY(column) REFERENCES othertable(column) 外键定义在 CREATE TABLE 中有效” ...如果在 mysql 中创建外键没有效果,如何跨表维护级联,例如,如果删除记录或插入新记录,将如何检查未输入无效值....
    • CREATE TABLE 语句中定义外键有两种方法:在列规范本身中(inline),以及作为单独的FOREIGN KEY 定义。两者都被接受(不会导致任何错误),但内联定义被忽略,因此您必须使用单独的 FOREIGN KEY 定义,或者您必须在创建表之后添加外键
    • 谢谢,我知道如何创建外键......所以你是说如果使用内联规范在表上创建外键,我们将无法看到已创建外键以后在这张桌子上?另外,请告诉我为什么外键在mysql中不重要......再次感谢!
    • 如果您使用内联规范定义外键,它们根本不会被创建。外键对使用 MySQL 的人很重要,就像它们对使用其他数据库引擎的人很重要一样。它们对 MySQL 开发人员 来说并不重要,因为长期以来他们错误地认为应用程序逻辑可以提供相同的好处。
    • 哦,好吧..谢谢..实际上在我使用的数据库中,我看到表关系中有很多差异,我认为如果维护了外键,这应该在很大程度上解决了问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 2021-05-19
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    相关资源
    最近更新 更多