Como encontrar las tablas en base de datos SIN la clave primaria (Primary key)?
En ciertas ocasiones, la base de datos puede no tener las claves primarias, como encontrar estas tablas?
Aquí tienes un código SQL para ver estas tablas:
SELECT
tab.table_schema AS NOMBRE_DE_BASE_DE_DATOS, tab.table_name as TABLAS_SIN_CLAVE
FROM
information_schema.tables tab
LEFT JOIN
information_schema.table_constraints tco ON tab.table_schema = tco.table_schema
AND tab.table_name = tco.table_name
AND tco.constraint_type = 'PRIMARY KEY'
WHERE
tco.constraint_type IS NULL
AND tab.table_schema NOT IN ('mysql' , 'information_schema',
'performance_schema',
'sys')
AND tab.table_type = 'BASE TABLE'
ORDER BY tab.table_schema , tab.table_name;
Despises, le aparecen los resultados con la lista de las tablas como esta:
NOMBRE_DE_BASE_DE_DATOS
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
mibasededatos |
TABLAS_SIN_CLAVE
zzz_cf7_vdata |
zzz_cf7_vdata_entry |
zzz_pmxi_imports |
zzz_revslider_css |
zzz_revslider_layer_animations |
zzz_revslider_navigations |
zzz_revslider_sliders |
zzz_revslider_slides |
zzz_revslider_static_slides |
zzz_yoast_seo_meta |
Como añadir las claves primarias (PRIMARY KEY)?:
ALTER TABLE `mibasededatos`.`zzz_cf7_vdata_entry` ADD PRIMARY KEY (`id`);
Aplicando esto a cada tabla encontrada previamente.
Saludos!