Pourquoi ma contrainte unique apparaît-elle sous les index plutôt que sous les contraintes?

StackOverflow https://stackoverflow.com/questions/1012969

  •  06-07-2019
  •  | 
  •  

Question

J'ai créé une contrainte sur ma table tsql comme ceci:

alter table disabledqualities
add constraint uc_uIdQualCode
unique (userId, qualitycode)

Dans MSSMStudio, la contrainte apparaît sous les index plutôt que sous les contraintes.

Pourquoi?

- EDIT--
Je comprends que cela crée un index pour appliquer la contrainte, mais alors pourquoi existe-t-il un nœud appelé "contraintes"?

Était-ce utile?

La solution

SQL Server crée un index derrière la scène pour appliquer la contrainte

Voici un autre moyen d'écrire qu'en ajoutant un serveur SQL non clusterisé pour qu'il utilise un index non clusterisé, vous pouvez également créer un cluster si vous ne disposez pas déjà d'un PC en cluster (valeur par défaut) ou d'un autre index clusterisé.

alter table disabledqualities
add constraint uc_uIdQualCode
unique nonclustered (userId, qualitycode)

[modifier] ce nœud doit ajouter une contrainte de vérification, des contraintes uniques sont ajoutées sous les index

dans les deux cas, restez loin des sorciers

Autres conseils

Les contraintes de vérification et les contraintes par défaut sont affichées sous le noeud de contraintes.

SQL utilise des index pour appliquer des contraintes uniques.

  

Je comprends que cela crée un index pour appliquer la contrainte, mais pourquoi alors existe-t-il un nœud appelé "contraintes"?

Ce nœud doit afficher les contraintes CHECK .

La vraie réponse est "car Microsoft l'a dit. Si vous voulez la réponse, vous devrez leur demander ".

."

Les contraintes UNIQUE pouvant être trouvées dans la vue système sysindexes

sélectionnez * dans sysindexes où name = 'uc_uIddualCode'

C'est tout simplement logique Pour ajouter une nouvelle structure unique à partir de Studio, vous devez cliquer sur le bouton Gérer les index et les clés. Donc, si vous l'ajoutez à partir des index, vous devez le voir dans les index:)

Je pense que vous ne comprenez peut-être pas ce qui pourrait apparaître dans les contraintes, car vous ne savez pas ce qu’est une contrainte de vérification. Une contrainte de vérification vérifiera les données lors de l'insertion ou de la mise à jour pour voir si elles répondent à une sorte de règle de gestion. Il est utilisé pour assurer l'intégrité des données. Par exemple, si vous avez un champ entier qui ne devrait contenir que les valeurs 1,4 ou 5, vous devez configurer une contrainte de vérification pour vous assurer que 9 n'est jamais ajouté au champ. Une contrainte de vérification sur le champ de date peut spécifier qu'elle doit être postérieure à la date et à l'heure actuelles pour un champ qui correspond à la date planifiée ou à la date d'achèvement prévue. C’est le genre de choses qui apparaissent sous des contraintes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top