检查外键约束 MySQL

本文关键字:MySQL 约束 检查 | 更新日期: 2023-09-27 17:57:09

我需要检查架构上的外键约束。我需要表名、列名、引用的架构、引用的表和引用的列。谷歌搜索告诉我,我可以用information_schema来做到这一点。我对这种方法有些怀疑。

  1. 信息架构是否可靠?我有太多包含太多表的大型数据库,任何错误都会付出高昂的代价
  2. 考虑到information_schema是一个系统数据库并包含有关所有数据库的信息,任何查询都将花费相当长的时间。右?

是否有检查外键约束的替代方法?使用 SHOW CREATE TABLE 并比较查询似乎不是一个好主意。

我的应用程序将使用 C# (连接器:ODBC) 进行编码。我知道有一个.NET MySQL连接器为getschema方法(http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connecting-connection-string.html#connector-net-programming-getschema)提供外键列集合。有谁知道它是否也使用information_schema?

我真的可以在这里使用一些帮助。

问候

检查外键约束 MySQL

信息架构是否可靠?

如果不是,则您的数据库也不是。(提示:事实并非如此)。

考虑到information_schema是一个系统数据库并包含有关所有数据库的信息,任何查询都将花费相当长的时间。右?

这取决于您如何查询它们。尝试show indexes以查看可用索引。

是否有检查外键约束的替代方法?使用 SHOW CREATE TABLE 并比较查询似乎不是一个好主意。

理论上,show create table以略有不同的方式查询information_schema。

在实践中,进一步引用第二个链接,两者之间返回的某些信息可能不一致:

create table rolando (num int not null, primary key (num) using hash);
mysql> show create table rolando'G
  (...)
  PRIMARY KEY (`num`) USING HASH
mysql> show indexes from rolando;
(...) | Index_type | (...)
(...) | BTREE      | (...)

最后,请参阅:

查询 MySQL information_schema 数据库是查找相关表的好方法吗?