7

我需要的关于数据库的几乎所有信息,都可以在 information_schema 中找到

这次我需要通过单个查询读取数据库中所有外键的详细信息,我在 information_schema.key_Column_usage 中找到了所有内容,但找不到constraints like on delete, on update

我可以show create table为所有单独的桌子做。但是有没有办法通过这样的选择查询来获取这些详细信息?

SELECT CONSTRAINT_NAME, TABLE_NAME,COLUMN_NAME, REFERENCED_TABLE_NAME, 
REFERENCED_COLUMN_NAME FROM information_schema.`KEY_COLUMN_USAGE` WHERE 
table_schema = 'mydbname' AND referenced_column_name IS NOT NULL

它做得很好,但只是缺少一些约束,比如on delete, on update我怎样才能获得这些值,以便我可以在单个查询中获取有关外键的所有信息?

4

4 回答 4

12

UPDATE_RULEDELETE_RULE是你要的东西

这有点太晚了,但它可以帮助其他人,这里是解决方案:

SELECT tb1.CONSTRAINT_NAME, tb1.TABLE_NAME, tb1.COLUMN_NAME,
tb1.REFERENCED_TABLE_NAME, tb1.REFERENCED_COLUMN_NAME, tb2.MATCH_OPTION,

tb2.UPDATE_RULE, tb2.DELETE_RULE

FROM information_schema.`KEY_COLUMN_USAGE` AS tb1
INNER JOIN information_schema.REFERENTIAL_CONSTRAINTS AS tb2 ON
tb1.CONSTRAINT_NAME = tb2.CONSTRAINT_NAME
WHERE table_schema = 'sfa' AND referenced_column_name IS NOT NULL
于 2015-01-22T14:47:06.977 回答
1

更新information_schema.REFERENTIAL_CONSTRAINTS表中添加 mysql 5.1 mysql-5.1我们可以获得有关所有约束的信息**。接受的答案将解决方案作为查询提供。

早前mysql-5.0 等 mysql 5.1 之前,我们无法获取此信息,只能show create table用于单个表。

于 2012-10-05T20:49:59.497 回答
0

如果您正在寻找 (primary|foreign|unique) 键:

http://dev.mysql.com/doc/refman/5.5/en/table-constraints-table.html

于 2012-10-04T20:03:02.563 回答
0

现在,您可以在表 INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 中找到外键约束的详细信息

http://dev.mysql.com/doc/refman/5.5/en/referential-constraints-table.html

于 2014-10-09T09:27:04.313 回答