7
votes

Définir par programme la graine d'identité dans une variable de table

J'ai besoin de créer une variable de table avec une graine d'identité qui commence par la valeur max d'un champ d'une autre table?

J'ai essayé ceci: p>

DECLARE @IdentitySeed int

SET @IdentitySeed = (SELECT MAX(HHRecId) +1 FROM xxx )

DECLARE @HH TABLE (
    HHId INT IDENTITY(@IdentitySeed,1)
    ,AddressType CHAR(1)
    ,Address1 VARCHAR(100)
    ,City VARCHAR(50)
    ,State VARCHAR(2)
    ,Zip VARCHAR(5)
    ,LastName VARCHAR(50)
    )


0 commentaires

3 Réponses :


3
votes

Je crois que vous pouvez faire cela, mais cela devra être fait dans Dynamic SQL - déclarer la table de table dans le SQL dynamique et l'utiliser là aussi!

Ce serait sûrement plus facile et entraînerait un code plus rapide si vous l'avez commencé à 1 et que vous aviez un champ d'identité secondaire calculé en tant que ID max (HHRecid) +.


0 commentaires

11
votes

Vous pouvez vérifier la valeur actuelle d'une colonne d'identité à l'aide de: xxx

et vous pouvez également modifier plus tard à l'aide de: xxx p> Et cela fonctionne également avec une variable pour la nouvelle valeur: xxx

Il fonctionne pour les tables temporaires locales et globales (c.-à-d. Créer une table #hh (... ) ou créer une table ## HH (....) - mais il ne semble pas fonctionner avec des variables de table: - (

Désolé, il semble que Vous ne pouvez pas faire cela avec des variables de table .....


0 commentaires

5
votes

J'ai fini par faire ce qui suit: xxx

merci


0 commentaires