来自information_schema的约束细节(在更新级联上,关于删除限制)

时间:2012-10-04 19:18:46

标签: mysql foreign-keys constraints information-schema

几乎所有我需要的关于数据库的信息,我都可以在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 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

在提问时,早期版本的mysql中不存在

编辑: information_schema.REFERENTIAL_CONSTRAINTS。现在答案是肯定的,您可以获得有关所有约束的信息。接受的答案将解决方案作为查询。

原始答案:很抱歉,您无法从information_schema获取所需的详细信息,并且您必须依赖于show create table每个表Here都是关于mysql为您提供的外键你可以看到只有show create table被建议看外键细节。您可以查看This link,但不能再查看。

答案 3 :(得分:0)

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

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