powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Равномерное увеличение AUTOINCREMENT
6 сообщений из 6, страница 1 из 1
Равномерное увеличение AUTOINCREMENT
    #40090169
Murderface_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Использую базу 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
Равномерное увеличение AUTOINCREMENT
    #40090177
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Равномерное увеличение AUTOINCREMENT
    #40090183
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Равномерное увеличение AUTOINCREMENT
    #40090199
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

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


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