Uruchamiam scalanie w programie SQL Server. W mojej aktualizacji chcę tylko zaktualizować wiersz, jeśli wartości się zmieniły. Istnieje wiersz wersji, który zwiększa się przy każdej aktualizacji. Poniżej znajduje się przykład:Scal - aktualizuj tylko, jeśli zmieniły się wartości
MERGE Employee as tgt USING
(SELECT Employee_History.Emp_ID
, Employee_History.First_Name
, Employee_History.Last_Name
FROM Employee_History)
as src (Emp_ID,First_Name,Last_Name)
ON tgt.Emp_ID = src.Emp_ID
WHEN MATCHED THEN
UPDATE SET
Emp_ID = src.Emp_ID,
,[VERSION] = tgt.VERSION + 1
,First_Name = src.First_Name
,Last_Name = src.Last_Name
WHEN NOT MATCHED BY target THEN
INSERT (Emp_ID,0,First_Name,Last_Name)
VALUES
(src.Emp_ID,[VERSION],src.First_Name,src.Last_Name);
Teraz, jeśli chciałem tylko zaktualizować wiersz, a tym samym przyrost wersję tylko wtedy, gdy nazwa została zmieniona.
Czy to powinno być "lub"? Jeśli zmieniło się tylko imię, nadal chcę zaktualizować – TrialAndError
@ TrialAndError: Tak, masz rację. Naprawianie ... – a1ex07
Myślę, że to zadziała idealnie. Nie zdawałem sobie sprawy, że mogę mieć "AND" w części MATCHED. Dziękuję Ci. – TrialAndError