Я хотел бы обновить данные до таблицы в SQLite, но обновляемый столбец (если запись найдена) должна быть общей. Я использую параметризованный запрос, и у меня возникают проблемы с синтаксисом.Upsert в SQLite с текущим итогом, если запись найдена
Мое понимание до сих пор является то, что COALESCE является способ сделать upsert в SQLite, так что это скелет, что у меня до сих пор:
INSERT OR REPLACE INTO TABLE (ID, Quantity)
VALUES (:ID, COALESCE(Quantity + :Quantity_change, :Quantity_change)
Другими словами, если запись найдите, добавьте изменение количества в текущее количество, иначе вставьте запись с изменением количества в качестве количества.
В сервере SQL он прекрасно работает с запросом слияния:
MERGE ......
.....
WHEN MATCHED THEN UPDATE SET Quantity = Quantity + :Quantity_change
WHEN NOT MATCHED THEN INSERT (..Quantity), VALUES (.. :Quantity_change);