2009-12-07 6 views

Répondre

5
DECLARE @MyVar TABLE (ID int) 

INSERT INTO dbo.TargetTable 
    OUTPUT INSERTED.ID INTO @MyVar 
SELECT * FROM dbo.SourceTable 

SELECT * FROM @MyVar 
+0

Puis-je avoir une autre colonne qui capture aussi l'identifiant d'origine? – adam0101

+0

Je pense que je l'ai eu, je voudrais juste modifier la structure de la table et ensuite changer la ligne de sortie à quelque chose comme ça, non? OUTPUT dbo.SourceTable.ID, INSERTED.ID IN @MyVar – adam0101

+0

Oui, ajoutez simplement une colonne à @MyVar et une autre INSERTED.Something –

3

Utilisez the OUTPUT clause à capture them (SQL Server 2005 et versions ultérieures).

+1

Bon à savoir. Je n'ai plus besoin d'utiliser les curseurs :) –

0

Certaines bases de données prennent en charge la syntaxe INSERT INTO ... SELECT ... RETURNING .... Puisque vous utilisez TSQL, je crois que la syntaxe qui est:

INSERT INTO table (fields...) 
OUTPUT outputfields... 
SELECT ... 

Il y a un PDF sur la question: Returning.pdf

Questions connexes