SQLite ON CONFLICT无法在v3.8.11.1(默认情况下随ubuntu一起提供)上工作

时间:2018-12-16 17:04:46

标签: sqlite

选择sqlite_version();
INSERT INTO用户(uuid,test_field)VALUES('uuid1','1.0);
在冲突(uuid)上插入用户(uuid)值('uuid1')进行更新设置test_field ='1.1';

以上结果导致:
3.8.11.1

错误:“开”附近:语法错误

为什么无法识别ON CONFLICT的ON字

1 个答案:

答案 0 :(得分:0)

ON CONFLICT的美称是UPSERT,仅在SQLite 3.24.0中引入。

按照:-

  

UPSERT是对INSERT的特殊语法添加,导致INSERT   如果INSERT违反了   唯一性约束。 UPSERT不是标准的SQL。 SQLite中的UPSERT   遵循PostgreSQL建立的语法。增加了UPSERT语法   到SQLite版本3.24.0(2018-06-04)。

SQL As Understood By SQLite - upsert

因此,它不能在SQLite 3.8.11.1中使用,因此 ON 附近的SYNTAX错误,因为在该上下文中它不是公认的关键字。