Update or insert entre 2 tables
Bonjour
Je m'adresse a vous parce que je suis bloquer sur quelque chose qui doit etre tres simple.
Quotidiennement, je reçois des informations dans une table temporaire (T_Tempo). Je voudrais utiliser les valeurs de cette table pour mettre a jour
une seconde table de stockage (T_stock).
Pour cela, je dois ajouter les lignes de ma tables T_Tempo qui n'existe pas encore dans ma table T_Stock.
Si l'information existe deja je dois juste mettre a jour certaines colonnes.
J'ai donc utiliser l'idée suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
UPDATE T_Stock
SET S_Moyenne = TP.Moy
From T_Tempo TP WITH (NOLOCK)
WHERE TP.Trans = 'O'
+ Condition ...
IF @@ROWCOUNT=0
INSERT INTO T_Stock
Select *
From T_Tempo TP WITH (NOLOCK)
WHERE TP.Trans = 'O'
+ condition .. |
Le probleme c'est que celui ci fait bien les updates mais comme le nombre de résultat n'est pas nul, je ne fais jamais les inserts.
Je n'arrive pas a trouver une solution optimiser qui me permettrait de faire un update de toute mes lignes existant deja dans ma table de stockage et un insert des lignes non existante.
Une fois les update et inserte fais, je souhaiterais supprimer les lignes correctement traité de ma table temporaire
rien de compliquer a premiere vu mais apparament mon cerveau est indisponible en ce moment ^^
Merci a tous pour vos piste de solution
Récupération des lignes traités via un merge
Bonjour
Merci pour la réponse en effet le merge répond parfaitement a mon problème est c'est quelque chose que je ne connaissait absolument pas. ;)
Mes update et insert se passe parfaitement bien par contre je n'est pas trouver comment récupérer les numéro de ligne correctement traité afin de les supprimer de ma table ?
Mieux encore l'idéal serait d'utiliser les numéro de lignes afin de mettre a jour un indicateur de ma table temporaire ( est garder ainsi un historique sur une certaine période).
Si quelqu'un pourrait m'aider
Merci