SQL Server 2008/2005 p>
Je suis confondu entre la clé primaire et unique. p>
Je suis conscient que la clé primaire ne permettra pas NULL, tandis qu'un unique acceptera NULL. En outre, une table peut avoir 'n' nombre de clés uniques ..! P>
si la clé primaire permettra de zéro? p>
4 Réponses :
Oui. Null est l'absence d'une valeur. 0 code> est une valeur. P>
Les principales principales appuient-elles zéro?
Oui. La clé principale prend en charge zéro
La clé primaire peut être nulle, mais si vous définissez l'identité sur la colonne, elle commencera normalement à 1 au lieu de zéro. P>
La clé primaire aura une colonne d'identité .. (probable ou la plupart des scénarios) .. alors puis-je supposer, s'il y a une colonne d'identité, nous pouvons commencer la graine / incrémentation de 0. Pour commencer par zéro au lieu de zéro au lieu de 1, comment faire ça?
Pourquoi voudriez-vous commencer l'incrément à zéro quand même? Mais oui, commencez la graine à zéro, puis incrémentez-la de ce que ce serait une identité (0,1)
J'ai testé le scénario ..! S'il n'y a pas d'identité .., primaryKey permettra zéro ..!
Yeh c'est correct. Comme je l'ai dit dans ma réponse initiale indiquant que "la clé primaire peut être zéro"
Une clé primaire peut permettre à 0 en fonction du parcours du type de données de la clé primaire. Un pc autogogené (identité) peut commencer à 0 mais ce n'est pas le comportement par défaut, vous devrez le configurer pour démarrer à 0 (Heck, vous pouvez commencer par des numéros négatifs si vous le souhaitez). Pour de meilleurs résultats, cela devrait être fait avant de commencer à entrer des données à la table.
Ce que vous ne pouvez pas faire, c'est avoir plusieurs enregistrements avec un 0 comme le PK que cela viole la nécessité d'unicité de la PK. P>
Si vous avez des données existantes et que vous souhaitez une valeur de zéro pour Un objectif spécifique (par exemple, nous mettons dans un utilisateur pour notre processus d'importation, le champ INSERTEDBY pourrait montrer que l'enregistrement provenait d'une importation), alors ce que vous voulez probablement, c'est autoriser une insertion manuelle dans le champ Identité, afin que vous puissiez ainsi Entrez cet enregistrement spécifique à la valeur souhaitée, puis revenez au paramètre habituel. Ceci est fait de cette façon: p> ne le fais pas dans le code de production de l'application, il s'agit d'un type d'administrateur système qui ne devrait être effectué que de temps en temps pour le réglage d'un enregistrement particulier en dehors de la portée des données normales ou aux dossiers d'insertion de transfert d'une autre source (si vous connaissez leurs valeurs id existantes sont actuellement inutilisés). Cela ne devrait pas être légèrement utilisé pour contourner les restrictions d'un champ d'identité. En particulier, il ne faut jamais être utilisé pour remplir des enregistrements dans lesquels l'identité a sauté (en raison d'une suppression ou d'une annulation), car cela défait le but d'utiliser une identité et peut entraîner des problèmes d'intégrité des données si des relations PK / FK appropriées n'étaient pas configurées. < / p> p>
Merci pour l'explication approfondie et détaillée, il s'agit également de la seule réponse à montrer comment faire ce que l'OP a demandé, tout en expliquant pourquoi ne pas le faire. Brillant!
Oui, vous pouvez définir une colonne avec une valeur par défaut de 0 en tant que clé étrangère. Cependant, pour que la contrainte au travail, vous auriez besoin d'une ligne dans la table source avec une valeur de 0 aussi. ... vous pouvez insérer l'enregistrement d'identifiant 0 principal dans la table principale. P>
Juste un commentaire informatif. Cette question est également applicable à
mysql code>