Я пытаюсь выполнить запрос на слияние в sql-сервере.Проблема с запросом на слияние не выполняется, как и должно быть
В таблице "my_table" имеет 4 столбца "поле" (символ), "дата" (дата), "Вал" (числовое), "редакция" (DateTime)
запрос является как таковой:
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.*;
Как уже есть строка «my_table» с полем = «field_example» и датой = «2017-01-04», я ожидал этот запрос для обновления 2 других столбцов «VAL», "пересмотр ».
я получаю следующий результат запроса:
$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
Так выглядит хорошо (чтобы были обновлены, как это должно быть)
Однако, когда я смотрю в базе данных, то строка не была обновлена (= val по-прежнему 161250 вместо 0, а ревизия еще 2017-01-03 10:09:25)
Любая идея, почему?
Можете добавить примеры данных из вашей таблицы. –
Надеюсь, что нет ROLLBACK или возврата оператора/триггера существует. –