J'essaie de trouver les contraintes uniques d'une table à l'aide de Java (sur une base de données Oracle, mais cela ne devrait faire aucune différence). P>
J'ai trouvé un moyen de découvrir les clés primaires d'une table, grâce à GetPrimarykeys de Databasemetata (....); Cependant, je n'ai pas pu trouver les consistitions uniques des tables et Internet n'était pas capable de m'aider, donc je finis ici à poser ma question :) p>
Y a-t-il un moyen propre pour trouver les contraintes uniques (ou plutôt le nom des colonnes qui doivent être uniques pour une table .. Eh bien, vous l'obtenez HEHE) d'une table? Meilleures salutations, p>
nuls p>
4 Réponses :
Vous pouvez interroger le dictionnaire de données:
Merci Vincent, c'est exactement ce que je cherchais !! Merci beaucoup !
Si Oracle crée des index pour des contraintes uniques (je ne sais pas si nécessaire, vous devez vérifier) que vous pourriez en savoir plus sur vos contraintes via getindexinfo () code> p>
Oui, Oracle crée un index unique sur toutes les colonnes identifiées dans une contrainte unique - c'est la manière dont il applique l'unicité.
Cependant, des index uniques peuvent être complètement centrés sur Oracle. Si une solution générique est nécessaire, cela peut ne pas être vrai dans tous les cas.
Et, je pense que Oracle peut également utiliser un index non unique pour appliquer une contrainte unique.
Les contraintes uniques sont généralement appliquées par un index. Peut-être utiliser databasemetataa.getindexinfo () code> pour trouver les index où la non-unique est fausse? P>
Étant donné que la plupart des bases de données stockent ces contraintes comme index, vous pouvez utiliser Databasemetataa.getindexinfo () Comme mentionné précédemment. Cela a bien fonctionné pour moi lors de l'utilisation Il est seulement important d'appeler avec le code suivant: p> Vous pouvez appeler: p> et récupérez un Liste de toutes les contraintes uniques pour une table donnée. Les contraintes sont regroupées par index car un indice peut couvrir plusieurs colonnes s'il ne s'agit que d'une manière unique en combinaison. P> P> getindexinfo () code> avec le 4ème paramètre sous le vrai code> comme la documénation dit: p>
unique code> - lorsque vrai, ne renvoiez que des indices pour des valeurs uniques; quand faux,
Indices de retour, que ce soit unique ou non p>
blockquote>
Donc, je suppose que vous préféreriez ne pas avoir une solution spécifique à Oracle?