База данных Н2 объединяется на основе одного столбца - PullRequest
0 голосов
/ 29 июня 2018

Я хочу обновить или вставить в эту таблицу dataTime, если loginId уже существует, иначе вставить

CREATE TABLE IF NOT EXISTS UserLastActivity 
(
    id INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    loginId VARCHAR(500) NOT NULL,
    dataTime BIGINT NOT NULL,
);

Первая попытка:

MERGE INTO UserLastActivity KEY(loginId) VALUES(#{loginId}, #{dataTime})

Для приведенного выше утверждения я получаю исключение, указывающее на несоответствие количества столбцов

Вторая попытка:

MERGE INTO UserLastActivity KEY(loginId) (loginId, dataTime)
VALUES(#{loginId}, #{dataTime})

Я получаю исключение

Вызвано: org.h2.jdbc.JdbcSQLException: синтаксическая ошибка в операторе SQL "MERGE INTO USERLASTACTIVITY KEY (LOGINID) (LOGINID [*], DATATIME) VALUES (?,?)"; ожидается "(, SELECT, FROM"; оператор SQL:

1 Ответ

0 голосов
/ 14 июля 2018

Две вещи:

  • Безопаснее указывать имена столбцов, как вы бы это делали на любом INSERT.
  • Необходимо указать значение для loginId, поскольку оно объявлено NOT NULL.

    MERGE INTO UserLastActivity (id, loginId, dataTime) 
      KEY(loginId) 
      VALUES(10, 'user1', 1234);
    
...