几乎所有我需要的关于数据库的信息,我都可以在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
这样的约束我如何获得这些值,以便我可以在单个查询中获取有关外键的所有信息?
答案 0 :(得分:9)
UPDATE_RULE
和DELETE_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)
编辑: 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