0

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

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

  1. 解析结果SHOW CREATE TABLE X
  2. 利用INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS

不幸的是,选项二需要 MySQL 5.1.16 或更高版本,所以我不能使用它,除非/直到我能说服我们的服务器人员进行更新,虽然我可能会选择选项 1,但感觉很混乱,而且没有编写完整的 SQL解析器我不确定我的代码是否总是适用于任何表。

有没有其他方法可以获取这些信息?

谢谢

4

1 回答 1

1

来自 MySQL 5.0 在线手册

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

SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';

外键约束列在输出的Comment列中。


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

另外的选择:

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

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

于 2011-08-16T13:55:56.727 回答