在没有information_schema的情况下确定InnoDB FK约束

时间:2011-08-16 11:10:11

标签: mysql foreign-keys innodb information-schema

我正在编写一些代码来检查MySQL数据库结构,并需要有关外键约束的信息(在InnoDB表上)。

我知道有两种方法可以做到这一点:

  1. 解析SHOW CREATE TABLE X
  2. 的结果
  3. 使用INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS
  4. 不幸的是,选项二需要MySQL 5.1.16或更高版本,所以我不能使用它,除非/直到我可以说服我们的服务器人更新,而我可能可以逃避选项1,它感觉很乱并且没有写一个完整的SQL解析器,我不确定我的代码是否总能与任何表一起使用。

    是否有其他方式获取此信息?

    由于

1 个答案:

答案 0 :(得分:1)

From the MySQL 5.0 manual online

  

您还可以显示表格的外键约束   这样:

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
  

外键约束列在注释列中   输出


海报表明这不提供ON UPDATEON DELETE信息,这是外键行为的重要组成部分。

另一种选择:

由于您控制所涉及的代码,是否可以在 版本5.1+的相同环境中设置另一个MySQL实例?如果是这样,让我们​​调用该实例 dummy 。在实时数据库上运行SHOW CREATE TABLE。然后,在 dummy 上运行DROP TABLE IF EXIST,然后运行SHOW CREATE TABLE查询的输出。

现在,您可以在虚拟数据库上使用INFORMATION_SCHEMA来获取信息。

相关问题