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

标签 mysql foreign-keys constraints information-schema

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

关于mysql - 来自 information_schema 的约束细节(关于更新级联,关于删除限制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12734331/

相关文章:

java - 如何使用 Swing 正确处理大数据 - 性能提示

php 错误 - 额外循环运行一次?

mysql - 这个 SQL 错误是什么意思?

mysql - 外键作为主键

mysql - 不能链接两个表?

r - 在 R 中使用字符和列总和约束的 lpSolve

MySQL 可选约束

php - 结合MySQL查询?

sql - 如何在Postgres中实现列值变化约束

php - Codeigniter 3 - 我可以从 3 张图片中获取图片上传的 url 吗?