Copie row entre tables

babe59 Messages postés 189 Date d'inscription vendredi 28 mai 2004 Statut Membre Dernière intervention 27 novembre 2015 - 23 févr. 2011 à 18:06
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 15 avril 2012 à 20:55
Bonjour,

j'ai une base opé et une base archivage qui ressemble beaucoup à la base opé.
j'aimerai, pour certaines tables, copier certaines lignes d'une base à l'autre (structures de table identique). jusque là pas de souci.
J'utilise "INSERT INTO BD2..TBL1 SELECT * FROM BD1..TBL1 WHERE KEY='X'"
Malheureusement, je vais être amené à devoir faire des mises à jour et pas simplement des INSERT. Bien évidemment, pour ne pas modifier le code, j'aimerai ne pas devoir specifier le nom des colonnes dans ma clause UPDATE. Ca donnerait quelque chose du style "UPDATE BD2..TBL1 SELECT * FROM BD1..TBL1 WHERE KEY='X'"...
Comment puis je faire
PS : ne me proposez pas de réplication...
Merci

1 réponse

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
15 avril 2012 à 20:55
Bonjour,

Une commande Update revient à supprimer puis à réinsérer la ligne mise à jour dans la table en gardant la clé même si elle est identity. On peut reproduire ces étapes.

SET IDENTITY INSERT OFF
DELETE DB2..TBL1 WHERE KEY = 'X'
INSERT INTO ...
SET IDENTITY INSERT ON


Ceci est une solution, une autre consisterait à créer dynamiquement la commande Update en listant les colonnes de la table, et l'exécuter avec
EXEC sp_executeSql @Phrase


Yann
0
Rejoignez-nous