Isso é algo que vale a pena pesquisar, se você estiver trabalhando com bancos de dados em qualquer extensão.
Todos os DBMS com os quais trabalhei até agora têm um meio de examinar as restrições, colunas e informações da tabela. Aqueles para MySQL que o ajudarão a fazer o que você deseja provavelmente estão no INFORMATION_SCHEMA:
TABLE_CONSTRAINTS A referência do MySQL para isso está aqui .
SELECT table_name, constraint_name, constraint_type FROM INFORMATION_SCHEMA.table_constraints;
COLUNAS A referência do MySQL para isso está aqui.
SELECT column_name FROM INFORMATION_SCHEMA.columns;
KEY_COLUMN_USAGE
Você deve ser capaz de fazer algo assim para obter o que deseja:
SELECT INFORMATION_SCHEMA.key_column_usage.column_name
FROM INFORMATION_SCHEMA.key_column_usage
JOIN INFORMATION_SCHEMA.table_constraints
ON INFORMATION_SCHEMA.key_column_usage.column_name = INFORMATION_SCHEMA.table_constraints.column_name
WHERE INFORMATION_SCHEMA.table_constraints.constraint_type <> 'PRIMARY KEY'
O deve ser essencialmente o que você precisa. Visualizações/tabelas como essas podem ser suas melhores amigas quando precisar obter informações sobre seu esquema.
Eu espero que essa informação ajude.