如何查看表或列的所有外键?

在MySQL中,我如何获得指向特定表的所有外键约束的列表? 一个特定的列? 这与Oracle的问题是一样的,但是对于MySQL。


对于表格:

SELECT 
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_TABLE_NAME = '<table>';

对于一列:

SELECT 
  TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
  INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_SCHEMA = '<database>' AND
  REFERENCED_COLUMN_NAME = '<column>';

基本上,我们在where子句中用REFERENCED_COLUMN_NAME更改了REFERENCED_TABLE_NAME。


编辑:正如在评论中指出的,这不是OPs问题的正确答案,但知道这个命令是有用的。 这个问题出现在谷歌我正在寻找的东西,并认为我会留下这个答案让其他人找到。

SHOW CREATE TABLE `<yourtable>`;

我在这里找到了这个答案:MySQL:显示表格命令的约束

我需要这种方式,因为我想看看FK是如何运作的,而不是仅仅看它是否存在。


如果您使用InnoDB并定义了FK,则可以查询information_schema数据库,例如:

SELECT * FROM information_schema.TABLE_CONSTRAINTS 
WHERE information_schema.TABLE_CONSTRAINTS.CONSTRAINT_TYPE = 'FOREIGN KEY' 
AND information_schema.TABLE_CONSTRAINTS.TABLE_SCHEMA = 'myschema'
AND information_schema.TABLE_CONSTRAINTS.TABLE_NAME = 'mytable';
链接地址: http://www.djcxy.com/p/65387.html

上一篇: How do I see all foreign keys to a table or column?

下一篇: How to update jQuery mobile tables