检查外键约束 MySQL
本文关键字:MySQL 约束 检查 | 更新日期: 2023-09-27 17:57:09
我需要检查架构上的外键约束。我需要表名、列名、引用的架构、引用的表和引用的列。谷歌搜索告诉我,我可以用information_schema来做到这一点。我对这种方法有些怀疑。
- 信息架构是否可靠?我有太多包含太多表的大型数据库,任何错误都会付出高昂的代价
- 考虑到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?
我真的可以在这里使用一些帮助。
问候
信息架构是否可靠?
如果不是,则您的数据库也不是。(提示:事实并非如此)。
考虑到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 数据库是查找相关表的好方法吗?