2009-12-02 6 views

Répondre

6
select distinct CONSTRAINT_NAME 
from information_schema.TABLE_CONSTRAINTS 
where CONSTRAINT_SCHEMA = 'mysql' 
42
select distinct CONSTRAINT_NAME 
from information_schema.TABLE_CONSTRAINTS 
where table_name = 'table_name' and constraint_type = 'UNIQUE'; 
2

Cela ne produit pas de sortie élégante mais il est facile de se rappeler:

SHOW CREATE TABLE table_name; 
0

L'OP a demandé une table unique, cela va faire.

En outre, la suppression de la dernière clause where montrera toutes les colonnes d'une base de données qui sont protégées par des contraintes uniques:

SELECT 
    CONSTRAINT_NAME, 
    TABLE_NAME, 
    COLUMN_NAME 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE 
    CONSTRAINT_NAME LIKE 'UNIQ%' 
    AND TABLE_SCHEMA = 'your_database_name' 
    AND TABLE_NAME = 'your_table_name'; 

Malheureusement mysql ne facilite pas la suppression des indices basés sur un résultat de la requête. Vous pouvez exécuter la sortie de la requête suivante pour supprimer toutes les colonnes uniques dans 2 requêtes:

SELECT CONCAT(
    'ALTER TABLE ', 
    TABLE_NAME, 
    ' DROP INDEX ', 
    CONSTRAINT_NAME, 
    '; -- drops ', 
    COLUMN_NAME, 
    ' constraint' 
) 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE 
    CONSTRAINT_NAME LIKE 'UNIQ%' 
    AND TABLE_SCHEMA = 'your_database_name'; 
Questions connexes