如何查看表或列的所有外键?
在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