How do I see all foreign keys to a table or column? How do I see all foreign keys to a table or column? mysql mysql

How do I see all foreign keys to a table or column?


For a Table:

SELECT   TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROM  INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE  REFERENCED_TABLE_SCHEMA = '<database>' AND  REFERENCED_TABLE_NAME = '<table>';

For a Column:

SELECT   TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROM  INFORMATION_SCHEMA.KEY_COLUMN_USAGEWHERE  REFERENCED_TABLE_SCHEMA = '<database>' AND  REFERENCED_TABLE_NAME = '<table>' AND  REFERENCED_COLUMN_NAME = '<column>';

Basically, we changed REFERENCED_TABLE_NAME with REFERENCED_COLUMN_NAME in the where clause.


EDIT: As pointed out in the comments, this is not the correct answer to the OPs question, but it is useful to know this command. This question showed up in Google for what I was looking for, and figured I'd leave this answer for the others to find.

SHOW CREATE TABLE `<yourtable>`;

I found this answer here:MySQL : show constraints on tables command

I needed this way because I wanted to see how the FK functioned, rather than just see if it existed or not.


If you use InnoDB and defined FK's you could query the information_schema database e.g.:

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';