5 votes

Insérer dans la destination et mettre à jour la source

Dans SQL Server 2008, est-il possible d'insérer des données d'une table source dans une table de destination et de mettre à jour la table source avec @@identity de la table de destination en même temps?

Exemple

Table Source:

Id - UniqueId
Name - varchar(10) 
RealId [null] - int 

Table Dest

Id - [id] INT identity
Name - varchar(10)  

Je veux transférer des lignes de Source dans Dest, et mettre à jour le RealId à la valeur @@identity de la table Dest

Je peux modifier Source de n'importe quelle manière, la table Dest ne peut pas être modifiée.

Quels sont mes meilleures options ici?

Notez également que la colonne "Name" peut contenir des doublons donc je ne peux pas vraiment faire une jointure sur celle-ci.

(Les vraies tables sont beaucoup plus complexes, mais cela devrait donner une idée de ce que je veux)

4voto

Mikael Eriksson Points 77190

Jetez un coup d'œil à cette question. Utilisation de merge..output pour obtenir la correspondance entre source.id et target.id. Vous pouvez utiliser la sortie de merge pour obtenir une variable table avec un lien entre les identifiants dans source et target. Ensuite, vous pouvez utiliser cette table pour mettre à jour votre table source.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X