babe59
Messages postés189Date d'inscriptionvendredi 28 mai 2004StatutMembreDernière intervention27 novembre 2015
-
23 févr. 2011 à 18:06
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 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
tri_yann
Messages postés124Date d'inscriptionmercredi 23 novembre 2005StatutMembreDernière intervention19 septembre 20133 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