MySQL – foreign key – lista powiązanych kluczy

W jaki sposób sprawdzić które tabele mają zdefiniowane klucze obce do tabeli users.

SELECT
  TABLE_NAME,
  COLUMN_NAME,
  CONSTRAINT_NAME,   -- <<-- Nazwa potrzebna do skasowania 
  REFERENCED_TABLE_NAME,
  REFERENCED_COLUMN_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
  REFERENCED_TABLE_NAME = 'users'\G
+------------+-------------+-----------------+-----------------------+------------------------+
| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
+------------+-------------+-----------------+-----------------------+------------------------+      
| articles   | user_id     | user_key        | users                 | id                     |
| bookmarks  | user_id     | ub_key          | users                 | id                     |
+------------+-------------+-----------------+-----------------------+------------------------+

Druga wersja

SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME 
  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
  WHERE REFERENCED_TABLE_SCHEMA IS NOT NULL; 
+--------------+---------------+-------------+-----------------+
| TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | CONSTRAINT_NAME |
+--------------+---------------+-------------+-----------------+
| intranet     | articles      | user_id     | user_key        |
| intranet     | articles_tags | article_id  | article_key     |
| intranet     | articles_tags | tag_id      | tag_key         |
| intranet     | bookmarks     | user_id     | ub_key          |
+--------------+---------------+-------------+-----------------+

Dodaj komentarz