2009-12-20 6 views
1

Ma table SQL Server comporte, entre autres, ces colonnes.SQL Server: Comment obtenir la valeur de la ligne que j'ai insérée?

AutoID qui a IdentitySpecification définie sur True et GuidKey qui a la valeur par défaut (newid())

AutoID GuidKey 
1  f4rc-erdd 
2  gedd-rrds 

Est-il possible d'obtenir le GuidKey de la ligne insérée?

J'ai besoin de quelque chose comme Scope_Identity(), avec la différence que je ne veux pas obtenir le contenu de AutoID, mais la colonne GuidKey.

Répondre

5

Sql Server 2005/2008

INSERT INTO myTable (SomeColumn) 
    OUTPUT INSERTED.GuidKEY 
VALUES ('SomeData') 
+0

Que faire si vous avez plus d'une colonne qui stocke une valeur guid? – Tebo

0

Bien sûr:

SELECT GuidKEy FROM [Table] WHERE AutoID= scope_identity() 
0

Vous pouvez effectuer les opérations suivantes:

DECLARE @TempTable TABLE (GuidKey UNIQUEIDENTIFIER) 

INSERT INTO YourTable(Columns) 
    OUTPUT INSERTED.GuidKey INTO @TempTable(GuidKey) 
    VALUES(YourVALUES) 

Cela insérera le GuidKey inséré dans @TempTable. Vous pouvez ensuite extraire la valeur de cette table.

0

Pour le uniqueidentifier je fais comme suit:

DECLARE @ID uniqueidentifier 
SET @ID = newId() 

... 

Puis-je utiliser le @ID dans ma déclaration d'insertion. Enfin, je retourne la valeur en utilisant SELECT @ID ou RETURN @ID

Questions connexes