约束细节从INFORMATION_SCHEMA(在级联更新,删除上的限制)(Constraint d

2019-09-23 13:13发布

几乎所有我需要了解数据库中的信息,我能找到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我怎样才能获得这些值,这样我可以得到有关外键在一个单一的查询中的所有信息?

Answer 1:

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


Answer 2:

如果你正在寻找(主要|国外|唯一的)键:

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



Answer 3:

现在,你可以找到在表INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS外键约束的细节

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



Answer 4:

编辑: information_schema.REFERENTIAL_CONSTRAINTS没有在早期版本的MySQL存在的时候有人问。 现在的答案是肯定的,你可以得到所有约束的信息。 接受的答案给出了解决方案查询。

原来的答案:对不起,你不能从INFORMATION_SCHEMA所需的细节,你必须依靠show create table中的每个表这里是所有关于外键,其MySQL提供了你,你只能看到显示创建表的建议,看看国外的关键细节。 你可以看看这个链接再次,但没有。



文章来源: Constraint detail from information_schema (on update cascade, on delete restrict)