Les corrections spécifiques effectuées sur la valeur d'identité courante dépendent des spécifications de paramètres.
|
Commande DBCC CHECKIDENT
|
Correction(s) d'identité effectuée(s)
|
|---|
|
DBCC CHECKIDENT ( table_name, NORESEED )
|
La valeur d'identité courante n'est pas redéfinie. DBCC CHECKIDENT renvoie la valeur d'identité actuelle et la valeur maximale actuelle de la colonne d'identité. Si les deux valeurs diffèrent, vous devez redéfinir la valeur d'identité afin d'éviter les erreurs ou écarts potentiels dans la séquence de valeurs.
|
|
DBCC CHECKIDENT ( table_name )
ou
DBCC CHECKIDENT ( table_name, RESEED )
|
Si la valeur d'identité courante pour une table est inférieure à la valeur d'identité maximale stockée dans la colonne d'identité, elle est redéfinie à l'aide de cette valeur maximale dans la colonne d'identité.
|
|
DBCC CHECKIDENT ( table_name, RESEED, new_reseed_value )
|
La valeur d'identité actuelle est définie comme new_reseed_value. Si aucune ligne n'a été insérée dans la table depuis sa création ou si toutes les lignes ont été supprimées à l'aide de l'instruction TRUNCATE TABLE, la première ligne insérée après l'exécution de DBCC CHECKIDENT utilise new_reseed_value comme valeur d'identité. Dans le cas contraire, la ligne suivante insérée utilise la valeur new_reseed_value + la valeur incrémentielle actuelle.
Si la table n'est pas vide, le fait d'attribuer à la valeur d'identité un nombre inférieur à la valeur maximale dans la colonne d'identité peut aboutir à l'une des situations suivantes :
-
Si une contrainte PRIMARY KEY ou UNIQUE existe sur la colonne d'identité, les opérations d'insertion ultérieures dans la table déclenchent le message d'erreur 2627 car la valeur d'identité générée entre en conflit avec les valeurs existantes.
-
Si aucune contrainte PRIMARY KEY ou UNIQUE n'existe, les opérations d'insertion ultérieures aboutissent à des valeurs d'identité dupliquées.
|
Exceptions
Le tableau suivant répertorie les conditions dans lesquelles DBCC CHECKIDENT ne redéfinit pas automatiquement la valeur d'identité actuelle et indique comment redéfinir celle-ci.
|
Condition
|
Méthodes de redéfinition
|
|---|
|
La valeur d'identité actuelle est supérieure à la valeur maximale de la table.
|
-
Exécutez DBCC CHECKIDENT (table_name, NORESEED) pour déterminer la valeur maximale actuelle de la colonne, puis spécifiez cette valeur comme new_reseed_value dans une commande DBCC CHECKIDENT (table_name, RESEED, new_reseed_value).
ou
-
Exécutez DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) avec la valeur new_reseed_value définie à un niveau très bas, puis exécutez la commande DBCC CHECKIDENT (table_name, RESEED) pour corriger la valeur.
|
|
Toutes les lignes sont supprimées de la table.
|
Exécutez DBCC CHECKIDENT (table_name, RESEED, new_reseed_value) en attribuant à new_reseed_value la valeur de départ souhaitée.
|
Modification de la valeur de départ
La valeur de départ est la valeur insérée dans une colonne d'identité pour la toute première ligne chargée dans la table. Tous les lignes suivantes contiennent la valeur d'identité actuelle à laquelle s'ajoute la valeur d'incrément (la valeur d'identité actuelle étant la dernière valeur d'identité générée pour la table ou la vue). Pour plus d'informations, consultez Création et modification de colonnes d'identification.
Vous ne pouvez pas utiliser DBCC CHECKIDENT pour effectuer les tâches suivantes :
-
modifier la valeur de départ d'origine qui a été spécifiée pour une colonne d'identité lors de la création de la table ou de la vue ;
-
attribuer une nouvelle valeur de départ à des lignes existantes d'une table ou d'une vue.
Pour remplacer la valeur de départ d'origine dans des lignes existantes, vous devez supprimer la colonne d'identité et la recréer en spécifiant la nouvelle valeur de départ. Lorsque la table contient des données, les numéros d'identité sont ajoutés aux lignes existantes avec les les valeurs de départ et d'incrément. L'ordre dans lequel les lignes sont mises à jour n'est pas garanti.