web-dev-qa-db-fra.com

Clé primaire avec l'option "NOT FOR REPLICATION"

J'ai récemment repris un projet et j'ai découvert que dans la plupart des tables, la clé primaire a la propriété "NOT FOR REPLICATION ".

Je ne suis pas DBA, mais sûrement dans la plupart des bases de données, un enregistrement sans clé primaire serait considéré comme corrompu. La clé primaire de la plupart de ces enregistrements serait presque certainement utilisée comme clé étrangère quelque part.

Était-ce une erreur de la part du développeur précédent (qui ne travaille plus pour l'entreprise), ou y a-t-il une autre logique impliquée? Nous n'utilisons même pas de réplication dans l'environnement de production, donc cela n'affecte en fait rien de grave de toute façon, mais je me demandais s'il y avait d'autres effets secondaires de la suppression de toutes ces directives que je ne connais pas.

Je n'ai pas trouvé beaucoup de résultats utiles pour un certain nombre de termes de recherche liés à ce sujet, donc je suis assez certain que c'est juste une erreur idiote que je dois inverser, donc cette question est vraiment pour apaiser ma paranoïa.

22
Steve Rukuts

NOT FOR REPLICATION indique que lorsqu'un enregistrement est répliqué dans cette table, toute valeur insérée dans la colonne d'identité via l'agent de réplication conserve sa valeur d'origine dans le système source, mais tous les enregistrements ajoutés localement incrémentent toujours la valeur d'identité.

MISE À JOUR: Ancien lien cassé

Voici le lien vers les documents table_constraint qui détaille ce que le paramètre NOT FOR REPLICATION fera:

Contrainte de tablea

26
steoleary