Search code examples
mysqlforeign-keysinnodb

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


In MySQL, how do I get a list of all foreign key constraints pointing to a particular table? a particular column? This is the same thing as this Oracle question, but for MySQL.


Solution

  • For a Table:

    SELECT 
      TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
    FROM
      INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE
      REFERENCED_TABLE_SCHEMA = (SELECT DATABASE()) AND
      REFERENCED_TABLE_NAME = '<table>' \G
    

    For a Column:

    SELECT 
      TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME, REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
    FROM
      INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE
      REFERENCED_TABLE_SCHEMA = (SELECT DATABASE()) AND
      REFERENCED_TABLE_NAME = '<table>' AND
      REFERENCED_COLUMN_NAME = '<column>' \G
    

    Basically, change REFERENCED_TABLE_NAME with REFERENCED_COLUMN_NAME in the WHERE clause.