H2数据库基于一列合并

时间:2018-06-29 11:07:31

标签: h2

如果loginId已经存在,我想将dataTime更新或插入到该表中,否则插入

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 :(得分:0)

两件事:

  • 指定列名更安全,就像在任何 sudo apt-get update sudo apt-get autoclean sudo apt-get clean sudo apt-get autoremove 上所做的一样。
  • 您需要为INSERT指定一个值,因为它已声明为loginId

    NOT NULL