Est-ce que réinitialiser les keys primaires avec DBCC CHECKIDENT sécurisé pour les lignes avec un plus grand Id

J'ai une table avec la valeur de key de integer primaire et son incrément automatique un par un, les valeurs dedans allaient bien jusqu'à 116, soudainement après un moment il continue de la valeur 10085 ..

Je ne sais pas pourquoi mais j'ai peut-être fait une database rétrécie. Mais de toute façon je sais à propos de la command DBCC CHECKIDENT.

Ma question est, si DBCC CHECKIDENT (mytable, RESEED, 116) , est-ce que cela endommage mes lignes qui ont l'ID de 100085 à l'avenir? Je veux dire quand un jour mes rangées atteindront 100084, le server sql sautera-t-il d'autres identifiants ou jettera-t-il une exception à l'insertion d'un Id dupliqué?

il n'est pas recommandé d'utiliser la command suivante

 DBCC CHECKIDENT (mytable, RESEED, 116) 

car il lèvera l'exception quand vos rangées atteindront 100084

Pour plus d'informations, lisez le sujet suivant . il est dit qu'il est recommandé que toutes les lignes soient supprimées de la table. si vous voulez user DBCC CHECKIDENT pour la table de réensemencement

Ne fais pas ça

Il lancera une exception de key en double une fois que la colonne d'identité aura atteint 100084.

Il ne saute pas par magie les valeurs précédemment générées pour éviter les conflits. Vous pouvez facilement voir cela de la ci-dessous

 CREATE TABLE mytable ( x INT IDENTITY PRIMARY KEY, Y INT ) INSERT INTO mytable (Y) SELECT TOP (200) number FROM master..spt_values DELETE FROM mytable WHERE x BETWEEN 1 AND 150; DBCC CHECKIDENT (mytable, RESEED, 1) /*Works OK*/ INSERT INTO mytable (Y) SELECT TOP (149) number FROM master..spt_values /*Error*/ INSERT INTO mytable (Y) SELECT TOP (10) number FROM master..spt_values 

Msg 2627, niveau 14, état 1, ligne 25 Violation de la contrainte PRIMARY KEY 'PK__mytable__3BD019E5518439DD'. Impossible d'insert une key dupliquée dans l'object 'dbo.mytable'. La valeur de la key en double est (151). La déclaration a été résiliée.