Comment puis-je réamorçage d'une colonne d'identité en T-SQL variable de table?
J'ai un T-SQL variable de table (pas un tableau) qui a une auto-incrémentation de la colonne d'identité. Je veux effacer toutes les données de cette variable et de réinitialisation de l'identité de la valeur de la colonne 1. Comment cela peut-il être fait?
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez une variable de table, vous ne pouvez pas le faire. Si c'était un tableau, vous pouvez tronquer ou de l'utilisation
DBCC CHECKIDENT
. Mais, si vous ont d'utiliser une variable de table, vous devez utiliser autre chose qu'une colonne d'identité. Ou, plus précisément, l'utilisation de la colonne d'identité dans votre tableau de variable, mais la sortie à l'aide d'ROWNUMBER
:C'est le meilleur que vous pouvez faire avec la variable de table.
La troncation de la table va vider TOUTES les données, et de rétablir l'identité de la graine.
Sinon, vous pouvez utiliser cet appel à rétablir l'identité tout en conservant des données:
Je vous suggère d'utiliser deux variables de table. Le @Table1 a une identité de la semence sur la première colonne. @Table2 a la même première colonne, mais pas de l'identité de la semence sur elle.
En boucle par le biais de votre processus,
puis de les Supprimer à Partir de deux Tables de votre Processus de Boucles.
Sur votre premier passage, l' @Table2 aura un numéro séquentiel dans la première rangée, en commençant à 1.
La deuxième fois à travers la boucle de votre deuxième table peut avoir des numéros séquentiels dans la première colonne de départ à dire 1081. Mais si vous sélectionnez la valeur minimale à une variable
Ensuite, vous pouvez mettre à jour @Table2 pour faire RowID commencer à 1, comme suit:
Espère que cette aide
Je l'ai fait quand j'ai voulu utiliser un HAUT et d'une variable lors de l'utilisation de SQL 2000. Fondamentalement, vous ajoutez dans les dossiers et puis regardez le minimum. J'ai eu le même problème et a remarqué ce fil. Suppression de la table n'est pas réinitialisé les semences de bien que j'imagine à l'aide de GO doit supprimer la table et variable pour réinitialiser la graine.
@maxlimit dans la requête ci-dessus est la 900 de la requête et puisque la variable de table aurait du départ et de l'identité de la clé, cela permettrait de résoudre ce problème.
Toute requête peut soustraire l'issue de la procédure pour le faire insérer en tant que "1", etc.
Si vous avez besoin de tronquer la table variable à chaque tour de boucle while, vous pouvez mettre le
declare @myTbl (...)
instruction dans la boucle. Cela permettra de recréer la table et de réinitialiser la colonne d'identité à chaque tour de la boucle. Cependant, il a une lourde performances. J'ai eu assez serré boucle, et redeclaring la variable de table par rapport àdelete @myTbl
a été plusieurs fois plus lent.