我正在编写一些代码来检查MySQL数据库结构,并需要有关外键约束的信息(在InnoDB表上)。
我知道有两种方法可以做到这一点:
SHOW CREATE TABLE X
INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS
不幸的是,选项二需要MySQL 5.1.16或更高版本,所以我不能使用它,除非/直到我可以说服我们的服务器人更新,而我可能可以逃避选项1,它感觉很乱并且没有写一个完整的SQL解析器,我不确定我的代码是否总能与任何表一起使用。
是否有其他方式获取此信息?
由于
答案 0 :(得分:1)
From the MySQL 5.0 manual online:
您还可以显示表格的外键约束 这样:
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
外键约束列在注释列中 输出
海报表明这不提供ON UPDATE
和ON DELETE
信息,这是外键行为的重要组成部分。
另一种选择:
由于您控制所涉及的代码,是否可以在 版本5.1+的相同环境中设置另一个MySQL实例?如果是这样,让我们调用该实例 dummy 。在实时数据库上运行SHOW CREATE TABLE
。然后,在 dummy 上运行DROP TABLE IF EXIST
,然后运行SHOW CREATE TABLE
查询的输出。
现在,您可以在虚拟数据库上使用INFORMATION_SCHEMA
来获取信息。