我正在尝试执行以下查询:

INSERT INTO `xguilds_relations` ( `id1`, `id2`, `dominance` ) VALUES ( ?, ?, ? )
    ON CONFLICT DO UPDATE SET `dominance` = VALUES(`dominance`);


但是,这导致出现以下语法错误:


SQL错误或缺少数据库(“ UPDATE”附近:语法错误)


我浏览Google和Stackoverflow已有一段时间了,发现所有内容仅从SQLite 3.24.0开始才支持UPSERT。但是,我正在使用3.30.1,但仍然无法正常工作。

我想要实现的是:
-使用提供的xguilds_relations(表包含id或类似名称)和提供的CHECK (id1 > id2)将新行插入dominance
-如果具有提供的id的行已经存在,请使用新的dominance值更新该行

最佳答案

我不认为SQLite支持VALUES。这样行吗?

INSERT INTO xguilds_relations ( id1, id2, dominance )
    VALUES ( ?, ?, ? )
    ON CONFLICT DO UPDATE SET dominance = excluded.dominance;


您可能还希望包括冲突引用的列。

关于java - 使用最新版本时upsert的语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61011063/

10-12 23:01