簡體   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