几乎所有我需要的关于数据库的信息,我都可以在 information_schema 中找到
这次我需要通过单个查询读取数据库中所有外键的详细信息 我在 information_schema.key_Column_usage 中找到了所有内容,但找不到 约束,如删除、更新
我可以为所有单独的表执行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
它做得很好,但只是缺少像 删除、更新
这样的约束 我怎样才能同时获得这些值,以便我可以在单个查询中获得有关外键的所有信息?
最佳答案
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
关于mysql - 来自 information_schema 的约束细节(关于更新级联,关于删除限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734331/