首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql列出主键的所有外键

sql列出主键的所有外键
EN

Stack Overflow用户
提问于 2011-09-19 01:44:17
回答 2查看 812关注 0票数 1

假设"table_users“上的"user_id”字段是其他10个表上10个外键的主键。我想要重命名"table_users“上的主键字段,但它不允许我重命名它,因为有来自10个其他表的10个外键链接到它。我可以知道如何知道这10个表中哪一个有外键吗?显示包含外键的10个表的sql代码是什么?

我使用的是phpMyAdmin和InnoDB引擎。我知道SHOW ENGINE INNODB STATUS可以完成这项工作,但它每次显示一个表,这意味着我需要重复重命名主键字段10次,并运行SHOW ENGINE INNODB STATUS 10次才能找到所有10个表。有没有其他更好的解决方案来找出这10个表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-19 02:24:24

您可以尝试查询INFORMATION_SCHEMA数据库:

代码语言:javascript
运行
复制
select ku.* 
from INFORMATION_SCHEMA.table_constraints tc   
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku ON
(tc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME and tc.CONSTRAINT_SCHEMA =   
ku.CONSTRAINT_SCHEMA )
where constraint_type='FOREIGN KEY' and ku.REFERENCED_TABLE_NAME =     
'your_table_name'
票数 2
EN

Stack Overflow用户

发布于 2011-09-19 01:55:07

作为mysql root用户,您可以使用以下命令解决此问题

代码语言:javascript
运行
复制
SET foreign_key_checks = 0;

这将禁用约束系统,并允许您更改表定义。当然,从那时起,所有的外键约束都将被打破,并且需要删除并重新创建。

代码语言:javascript
运行
复制
SET foreign_key_checks = 1;

将重新打开约束系统。

Mysql也有一个可以查询的数据字典。这在This previous question中有完整的报道,所以我不会重复这些信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7463221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档