SQLite ON CONFLICT не работает для v3.8.11.1 (который поставляется с ubuntu по умолчанию) - PullRequest
0 голосов
/ 16 декабря 2018

выберите sqlite_version ();
INSERT INTO для пользователей (uuid, test_field) VALUES ('uuid1', '1.0);
INSERT INTO для пользователей (uuid) VALUES (' uuid1 ') ON CONFLICT (uuid) DO UPDATE SET test_field =' 1.1 ';

Выше приведены результаты:
3.8.11.1
OK
ОШИБКА: около "ВКЛ.": Синтаксическая ошибка

Почему он не может распознать слово ON ON ON CONFLICT

1 Ответ

0 голосов
/ 17 декабря 2018

Использование ON CONFLICT - это то, что называется UPSERT и было введено только в SQLite 3.24.0.

согласно: -

UPSERT - это специальный синтаксисдополнение к INSERT, которое заставляет INSERT вести себя как UPDATE или no-op, если INSERT нарушит ограничение уникальности.UPSERT не является стандартным SQL.UPSERT в SQLite следует синтаксису, установленному PostgreSQL.Синтаксис UPSERT был добавлен в SQLite с версией 3.24.0 (2018-06-04).

SQL как понял SQLite - upsert

Как таковойне может использоваться в SQLite 3.8.11.1 и, следовательно, ошибка SYNTAX около ON , так как в этом контексте это не распознанное ключевое слово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...