Таблица KEY_COLUMN_USAGE описывает, которые столбцы ключа имеют ограничения.
INFORMATION_SCHEMA
Name
SHOW
Name
Remarks
CONSTRAINT_CATALOG
NULL
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
COLUMN_NAME
ORDINAL_POSITION
POSITION_IN_UNIQUE_CONSTRAINT
REFERENCED_TABLE_SCHEMA
REFERENCED_TABLE_NAME
REFERENCED_COLUMN_NAME
Примечания:
Если ограничение внешний ключ, то это столбец внешнего ключа, не столбец, а не тот столюец, на который внешний ключ ссылается.
Значение ORDINAL_POSITION позиция столбца внутри ограничения, а не позиция столбца внутри таблицы. Позиции столбца пронумерованы, начиная с 1.
Значение POSITION_IN_UNIQUE_CONSTRAINT NULL для ограничений unique и primary-key. Для ограничений foreign-key это порядковая позиция в ключе таблицы, которая вызвана.
Например, предположите, что имеется две таблицы с именами t1 и t3, которые имеют следующие определения:
CREATE TABLE t1 (s1 INT, s2 INT, s3 INT, PRIMARY KEY(s3)) ENGINE=InnoDB;
CREATE TABLE t3 (s1 INT, s2 INT, s3 INT, KEY(s1),
CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)) ENGINE=InnoDB;
Для этих двух таблиц таблица KEY_COLUMN_USAGE имеет две строки:
Одна строка с CONSTRAINT_NAME = 'PRIMARY', TABLE_NAME = 't1', COLUMN_NAME = 's3', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = NULL.
Одна строка с CONSTRAINT_NAME = 'CO', TABLE_NAME = 't3', COLUMN_NAME = 's2', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = 1.