Próbuję wykonać kwerendę aktualizacji scalania w serwerze sql.Problem z kwerendą aktualizacji scalającej nie działa tak jak powinien
tabela "my_table" ma 4 kolumny "Pole" (znak), "Date" (data), "val" (numeryczna), "rewizja" (datetime)
zapytanie jest jako takie:
MERGE "my_table" AS Target USING (VALUES ('field_example','2017-01-04','0','2017-01-03 12:02:02')) AS Source ("field","date","val","revision")
ON (Target."field" = Source."field" AND Target."date" = Source."date")
WHEN MATCHED
THEN UPDATE SET Target."val" = Source."val",Target."revision" = Source."revision"
WHEN NOT MATCHED BY TARGET
THEN INSERT ("field","date","val","revision")
VALUES (Source."field", Source."date", Source."val", Source."revision")
OUTPUT $action, Inserted.*, Deleted.*;
Ponieważ istnieje już wiersz „my_table” z pole = „field_example” i date = „04.01.2017”, spodziewam tę kwerendę, aby zaktualizować 2 inne kolumny „Val”, "rewizji ".
uzyskać następujący wynik zapytania:
$action field date revision val field.1 date.1 revision.1 val.1
1 UPDATE field_example 2017-01-04 2017-01-03 12:02:02 0 field_example 2017-01-04 2017-01-03 10:09:25 161250
więc wygląda dobrze (aby zostały zaktualizowane tak jak powinien)
Jednak kiedy patrzę w bazie danych, wiersz nie został zaktualizowany (= wartość val nadal wynosi 161250 zamiast 0, a wersja wciąż jest 2017-01-03 10:09:25)
Każdy pomysł, dlaczego?
Czy możesz dodać przykładowe dane z tabeli. –
Mam nadzieję, że tam nie ma ROLLBACK lub przywróć instrukcję/trigger istnieje. –