J'ai plus de 100 tables dans SQL qui n'ont pas de clés ou d'index primaires sur les colonnes. p>
Je vérifie manuellement chaque colonne pour chaque table pour voir s'ils ont des clés uniques ou non. p>
Comment dois-je interroger pour obtenir des colonnes de clé uniques si elles ne sont pas présentes dans la table? P>
3 Réponses :
Ici, vous devez trouver un nom de colonne appartient à une table particulière:
SELECT c.name AS ColName, t.name AS TableName FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE c.name LIKE '%write here column name%';
Veuillez essayer de suivre la requête suivante
select stat.table_schema as database_name, stat.table_name, stat.index_name, group_concat(stat.column_name order by stat.seq_in_index separator ', ') as columns, tco.constraint_type from information_schema.statistics stat join information_schema.table_constraints tco on stat.table_schema = tco.table_schema and stat.table_name = tco.table_name and stat.index_name = tco.constraint_name where stat.non_unique = 0 and stat.table_schema not in ('information_schema', 'sys', 'performance_schema', 'mysql') and (tco.constraint_type !='UNIQUE' OR tco.constraint_type !='PRIMARY KEY') //You can made changes here if needed group by stat.table_schema, stat.table_name, stat.index_name, tco.constraint_type order by stat.table_schema, stat.table_name;
Vous voudrez peut-être essayer quelque chose comme ça courtoisie: Ce lien P> P>
Essayez la requête ci-dessous lorsque vous trouvez que le nom de la colonne concerné dans une table particulière n'a pas besoin de vérifier chaque table.