Pour une table CARS avec deux colonnes, MAKE et MODEL, je voudrais appliquer que pour certaines valeurs MAKE particulières, leurs valeurs MODEL doivent être uniques (en supposant c'est une base de données Oracle). Par exemple, je veux imposer des doublons pour Ford, mais pas pour Toyota. Je ne veux pas plus d'une rangée avec le modèle 'F150' et le 'Ford' MAKE. Cependant, il est correct d'avoir deux rangées avec le modèle 'Rav4' et le 'Toyota' MAKE. Il est également bon d'avoir une rangée avec le modèle 'F150' et le 'Ford' MAKE et une autre rangée avec le 'F150' MODEL et le 'Toyota' MAKE.Appliquer unicité sur un sous-ensemble de lignes sur une table dans Oracle DB
J'ai étudié différentes stratégies avec des déclencheurs, des contraintes ou des index, mais je n'ai encore rien trouvé qui me donnerait le niveau de contrôle dont j'ai besoin.
Merci!
Comment écrivez-vous cela, s'il y a vingt-huit marques pour lesquelles l'unicité doit être imposée, et trente-six autres pour lesquelles l'unicité n'est pas nécessaire? Comment serait-il maintenu si la liste des marques qui exigent l'unicité change avec le temps? – mathguy
@mathguy - probablement je créerais un index pour chaque marque qui exige l'unicité du modèle. Puisque nous parlons des constructeurs automobiles, je m'attends à ce que le nombre de marques soit raisonnablement bas. – user1041892
Merci! Je n'avais pas pensé à utiliser des déclarations de cas dans cette situation. C'est certainement le meilleur moyen que j'ai vu.Malheureusement pour moi, je dois ajouter ceci à une table existante qui a déjà des doublons (pour empêcher de futurs dups) mais il ne semble pas y avoir d'équivalent d'index pour les options 'DEFFERED NOVALIDATE' que vous pouvez donner sur une contrainte. – JKuester