在没有 information_schema 的情况下确定 InnoDB FK 约束
我正在编写一些代码来检查 MySQL 数据库结构,并且需要有关外键约束(在 InnoDB 表上)的信息。
我知道有两种方法可以做到这一点:
- 解析
SHOW CREATE TABLE X
的结果 - 使用
INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS
不幸的是,选项二需要 MySQL 5.1.16 或更高版本,所以我不能使用它,除非/直到我可以说服我们的服务器人员进行更新,虽然我可能可以使用选项 1,但它感觉很混乱,而且如果不编写完整的 SQL 解析器,我也不会觉得确保我的代码始终适用于任何表。
还有其他方法可以获取此信息吗?
谢谢
I'm writing some code to inspect a MySQL database structure, and need information about Foreign Key constraints (on InnoDB tables).
There are two ways I know of to do this:
- Parse the results of
SHOW CREATE TABLE X
- Use
INFORMATION_SCEMA.REFERENTIAL_CONSTRAINTS
Unfortunately option two requires MySQL 5.1.16 or later, so I can't use it unless/until I can convince our server guy to update, And while I can probably get away with option 1, it feels messy and without writing a full SQL parser I wouldn't feel sure my code would always work with any table.
Is there another way of getting at this information?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自 MySQL 5.0 在线手册:
海报表明这不提供
ON UPDATE
和ON DELETE
信息,而这些信息是外键行为的重要组成部分。另一种选择:
既然您控制了所涉及的代码,是否可以在版本5.1+的同一环境中设置另一个MySQL实例?如果是这样,我们将该实例称为“虚拟”。在实时数据库上运行
SHOW CREATE TABLE
。然后,在虚拟上运行DROP TABLE IF EXIST
,然后运行SHOW CREATE TABLE
查询的输出。现在,您可以在虚拟数据库上使用
INFORMATION_SCHEMA
来获取信息。From the MySQL 5.0 manual online:
Poster indicates that this doesn't provide
ON UPDATE
andON DELETE
information which is an important part of foreign key behavior.Another option:
Since you control the code involved, is it possible to set up another MySQL instance in the same environment which is version 5.1+? If so, let's call that instance dummy. Run the
SHOW CREATE TABLE
on the live database. Then, on dummy run aDROP TABLE IF EXIST
followed by the output from theSHOW CREATE TABLE
query.Now you can use
INFORMATION_SCHEMA
on the dummy database to get the information.