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.