Je les ai créés, mais j'ai oublié lesquels ils sont.Comment afficher les contraintes uniques d'une table dans MySQL?
Je veux juste
- les montrer.
- Supprimer toutes les contraintes sur une table.
Je les ai créés, mais j'ai oublié lesquels ils sont.Comment afficher les contraintes uniques d'une table dans MySQL?
Je veux juste
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where CONSTRAINT_SCHEMA = 'mysql'
select distinct CONSTRAINT_NAME
from information_schema.TABLE_CONSTRAINTS
where table_name = 'table_name' and constraint_type = 'UNIQUE';
Cela ne produit pas de sortie élégante mais il est facile de se rappeler:
SHOW CREATE TABLE table_name;
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';