IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Wayne
Člen
Avatar
Wayne:19.1.2020 14:39

Ahoj,

mám zdrojovou tabulku, kde data které neexiatují v cílové tabulce nebo ve zdrojové byli změněny tak pomocí SQL merge dávám do cílové tabulky. Problém však je že když chci změnit hodnotu sloupce, který je v SQL MERGE definovaný jako unikátní v tomto případě "Name". Vytvoří se mi nový záznam v db, tzn, že ten přejmenovaný záznam tam zůstane + se přidá nový záznam. Nevěděl by někdo jak tento problém nějakým způsobem řešit? Vím, že jedna varianta je mazat data v cílové tabulky, které nejsou ve zdrojové tabulce, ale to nechci.

Mám toto

MERGE TargetTable as Target
USING #tmpSource as Source
ON Target.Name = Source.Name)
WHEN MATCHED
THEN
UPDATE SET
...
...
WHEN NOT MATCHED BY Target
THEN
INSERT(.......)
VALUES(......)

Předem děkuju za rady.

 
Odpovědět
19.1.2020 14:39
Avatar
Ondřej Crha
Člen
Avatar
Odpovídá na Wayne
Ondřej Crha:12.3.2020 13:30

Můžu se zeptat na důvod? Resp. trochu přiblížit, co se tím řeší.

 
Nahoru Odpovědět
12.3.2020 13:30
Avatar
Jan Stodůlka
Tvůrce
Avatar
Jan Stodůlka:8.4.2020 15:58

Zkus jedno z tohoto:

  1. páruj to pomocí sloupce ID které nebudeš měnit - pokud jej nemáš, tak si jen vytvoř.
  2. ulož si v původní tabulce původní name než jej změníš. před spuštěním vlastního merge si v cílové tabulce updatni staré name na nové a pak už můžeš spustit ten merge, který se ti už bude správně párovat.
Nahoru Odpovědět
8.4.2020 15:58
Nechodím do hospody, protože doma programuji.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.