几乎所有我需要了解数据库中的信息,我能找到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
我怎样才能获得这些值,这样我可以得到有关外键在一个单一的查询中的所有信息?
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
如果你正在寻找(主要|国外|唯一的)键:
http://dev.mysql.com/doc/refman/5.5/en/table-constraints-table.html
现在,你可以找到在表INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS外键约束的细节
http://dev.mysql.com/doc/refman/5.5/en/referential-constraints-table.html
编辑: information_schema.REFERENTIAL_CONSTRAINTS
没有在早期版本的MySQL存在的时候有人问。 现在的答案是肯定的,你可以得到所有约束的信息。 接受的答案给出了解决方案查询。
原来的答案:对不起,你不能从INFORMATION_SCHEMA所需的细节,你必须依靠show create table
中的每个表这里是所有关于外键,其MySQL提供了你,你只能看到显示创建表的建议,看看国外的关键细节。 你可以看看这个链接再次,但没有。
文章来源: Constraint detail from information_schema (on update cascade, on delete restrict)