SQLITE на CONFLICT с несколькими уникальными ключами - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь заставить таблицу на основе счетчика работать с предложением о конфликте и, похоже, столкнулся с проблемой.

Моя текущая SQL схема

create table "read_ratio" (
    "time_bucket"   integer,
    "property_id"   text,
    "view_counter"  integer default 0,
    "read_counter"  integer default 0,
    primary key ("time_bucket","property_id"),
    unique ("time_bucket","property_id")
);

У меня есть попытался сделать это без первичного ключа с теми же результатами.

Запросы, которые я пытался выполнить и получить Result: near "ON": syntax error:

INSERT INTO read_ratio (time_bucket, property_id, view_counter)
VALUES ((strftime('%s','now')/60/60/24), 'qwe', 1)
ON CONFLICT(time_bucket) DO UPDATE SET view_counter = view_counter + 1;

INSERT INTO read_ratio (time_bucket, property_id, view_counter)
VALUES ((strftime('%s','now')/60/60/24), 'qwe', 1)
ON CONFLICT(time_bucket, property_id) DO UPDATE SET view_counter = view_counter + 1;

Запросы без условия конфликта вставляются и ограничиваются уникальные работы при повторной попытке. Но я не могу заставить его работать с конфликтом.

Я попробовал почти то же самое в MySQL (его эквивалент), и это сработало:

insert into read_ratio (time_bucket, property_id, view_counter)
values (round(unix_timestamp()/60), 'a3dcb4d229de6fde0db5686dee47145d', 1)
on duplicate key update view_counter = view_counter + 1;

Моя версия SQLite

➜ sqlite3 -version
3.29.0 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88alt1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...