繁体   English   中英

检查外键约束MySQL

[英]Checking foreignkey constraints MySQL

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

  1. 信息模式是否可靠? 我有太多的大型数据库,其中包含太多的表,任何错误的代价都很高
  2. 考虑到information_schema是一个系统数据库,其中包含有关所有数据库的信息,因此任何查询都将花费更长的时间。 对?

是否有其他方法可以检查外键约束? 使用SHOW CREATE TABLE和比较查询似乎不是一个好主意。

我的应用程序将使用C#(Connector:ODBC)进行编码。 我知道有一个.NET MySQL连接器,它为getschema方法提供外键列集合(http://dev.mysql.com/doc/refman/5.0/en/connector-net-programming-connecting-connection-string。 HTML#连接网编程-的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数据库是否是查找相关表的好方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM