Los creé, pero olvidé cuáles son.¿Cómo se muestran las restricciones únicas de una tabla en MySQL?
sólo quiero
- ellos muestran.
- eliminar todas las restricciones en una tabla.
Los creé, pero olvidé cuáles son.¿Cómo se muestran las restricciones únicas de una tabla en MySQL?
sólo quiero
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';
Esto no produce salida elegante, pero es fácil de recordar:
SHOW CREATE TABLE table_name;
El PO pidió una sola tabla, que esto va a hacer.
Además, la eliminación de la última cláusula where
mostrará todas las columnas de una base de datos que están protegidos por restricciones únicas:
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';
Desafortunadamente MySQL no facilita la eliminación de índices en base a un resultado de consulta. Podría ejecutar el resultado de la siguiente consulta para descartar todas las columnas únicas en 2 consultas:
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';