получить полную информацию об ограничениях - PullRequest
0 голосов
/ 13 января 2012

Я хочу создать запрос с таким результатом:

column_name, constraint_name, constraint_type, referenced_table_name, referenced_column_name

Я должен попробовать что-то вроде этого

SELECT col.column_name, cons.constraint_name, cons.constraint_type,col.referenced_table_name, col.referenced_column_name
FROM information_schema.table_constraints cons, information_schema.key_column_usage col
WHERE col.table_name = 'countries'
AND cons.constraint_name = col.constraint_name
AND cons.table_name = col.table_name

но я получил неверное имя столбца ...: (

пожалуйста, помогите мне ...

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Первичные ключи всегда имеют имя «PRIMARY», внешние ключи всегда имеют referenced_table_name, поэтому вы можете получить эту информацию из одной таблицы - key_column_usage:

SELECT
  column_name,
  constraint_name,
  CASE
    WHEN constraint_name = 'PRIMARY' THEN 'PRIMARY KEY'
    WHEN referenced_table_name IS NULL THEN 'UNIQUE KEY'
    ELSE 'FOREIGN KEY'
  END constraint_type,
  referenced_table_name,
  referenced_column_name
FROM
  information_schema.key_column_usage;
0 голосов
/ 13 января 2012
SELECT `COLUMN_NAME`, `CONSTRAINT_NAME`, `REFERENCED_TABLE_NAME`, `REFERENCED_COLUMN_NAME`
FROM `information_schema`.`KEY_COLUMN_USAGE`
WHERE `TABLE_NAME` = 'countries'
AND `CONSTRAINT_NAME` <> 'PRIMARY';

Я не знаю о constraint_type. Я не нашел этот столбец в information_schema.

...