我正在编写一些代码来检查MySQL数据库结构,并且需要有关外键约束的信息(在InnoDB表上(。
我知道有两种方法可以做到这一点:
- 分析
SHOW CREATE TABLE X
的结果 - 使用
INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS
不幸的是,选项二需要MySQL5.1.16或更高版本,所以我不能使用它,除非/直到我能说服我们的服务器人员进行更新。虽然我可能可以使用选项一,但这感觉很混乱,如果没有编写完整的SQL解析器,我就不确定我的代码是否总是适用于任何表。
有没有其他方法可以获取这些信息?
感谢
从MySQL 5.0手册在线:
也可以显示表的外键约束,如这个:
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
外键约束列在输出
Poster指出,这并没有提供作为外键行为的重要组成部分的ON UPDATE
和ON DELETE
信息。
另一种选择:
既然您控制了所涉及的代码,是否可以在是版本5.1+的同一环境中设置另一个MySQL实例?如果是这样的话,让我们调用该实例dumm。在实时数据库上运行SHOW CREATE TABLE
。然后,在dummy上运行DROP TABLE IF EXIST
,然后运行SHOW CREATE TABLE
查询的输出。
现在,您可以在伪数据库上使用INFORMATION_SCHEMA
来获取信息。