Гость
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Равномерное увеличение AUTOINCREMENT / 6 сообщений из 6, страница 1 из 1
11.08.2021, 21:44
    #40090169
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Добрый день! Использую базу SQLite для хранения информации о товарах, полученной с сайта парсингом. В таблицу необходимо добавлять только новые товары или товары, у которых изменилась цена. С этой задачей справляется ограничение
Код: sql
1.
UNIQUE(lot, price) ON CONFLICT IGNORE


Однако при каждой попытке добавления записей, у которых цена не изменилась счетчик id увеличивается на число таких записей. И когда появится новый товар, то его id будет существенно больше тех, что уже есть в таблице.

Вопрос заключается в том, как заставить счетчик id добавляемых записей в таблицу при успешном INSERT увеличиваться равномерно?

Код таблицы product.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TABLE IF NOT EXISTS product (
id INTEGER PRIMARY KEY AUTOINCREMENT,
lot INTEGER NOT NULL,
name TEXT,
url TEXT NOT NULL,
img BLOB,
price INTEGER NOT NULL,
datetime DATE NOT NULL DEFAULT (datetime('now','localtime')),
UNIQUE(lot, price) ON CONFLICT IGNORE);


...
Рейтинг: 0 / 0
11.08.2021, 23:58
    #40090177
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Код: sql
1.
2.
3.
4.
insert into product (lot, price, ....)
select lot, price, ....
from source
where source.lot || source.price not in (select product.lot || product.price from product);
...
Рейтинг: 0 / 0
12.08.2021, 06:08
    #40090183
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Код: sql
1.
2.
3.
4.
5.
6.
...
from source s
where
 not exists (select null from product p where s.lot = p.lot)  -- вставляем новые товары
 or  -- пропускаем товары с одинаковой ценой
 not exist (select null from product p join source s on s.lot = p.lot where s.price = p.price)

?
...
Рейтинг: 0 / 0
12.08.2021, 10:12
    #40090199
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Basil A. Sidorov,

Мне кажется достаточно только второго условия. Т.к. если товара нет, то и одинаковой цены на не него так же нет.
...
Рейтинг: 0 / 0
12.08.2021, 10:13
    #40090200
Murderface_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Спасибо всем, кто откликнулся!
...
Рейтинг: 0 / 0
12.08.2021, 10:29
    #40090208
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Равномерное увеличение AUTOINCREMENT
Leonid Kudryavtsev
Мне кажется достаточно только второго условия
Да, логично.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Равномерное увеличение AUTOINCREMENT / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]