Я использую MYSQL ON DUPLICATE KEY UPDATE
-функцию, и она работает, как я ожидаю, при работе с базой данных MYSQL. Но когда я пытаюсь написать тесты, работающие с HSQLDB в памяти, я испытываю другое поведение.
Принимая во внимание следующую таблицу:
CREATE TABLE foo (id INT PRIMARY KEY NOT NULL, counter INT);
Со следующим оператором вставки:
INSERT INTO foo(id, counter) VALUES (1, 1) ON DUPLICATE KEY UPDATE counter=counter+1
- После первого запуска счетчик равен 1.
- После второго запуска счетчик равен 2.
- После третьего запуска счетчик по-прежнему равен 2. Здесь я ожидалось, что счетчик будет 3. (Это 3, если я выполняю те же запросы против MYSQL).
Это ошибка, или я неправильно понял, как ON DUPLICATE KEY UPDATE
должен работать?
Рабочий пример приведен в следующем github-хранилище: https://github.com/mortenberg80/hsqldbtest