powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Почему в SQLite так криво работает автоинкремент?
4 сообщений из 4, страница 1 из 1
Почему в SQLite так криво работает автоинкремент?
    #39563031
lexalex83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что то мне не нравится как работает автоинкремент в SQLite..

например, когда я делаю
Код: sql
1.
INSERT OR IGNORE

, и вставка не происходит (потому что уже такое поле есть а там стоит уникальный ключ)

то
Код: sql
1.
select last_insert_rowid();

возвращает 0, казалось бы все правильно.

но если скажем последнее last_insert_rowi было 30 , потом два раза инсерт не произошел, а на третий прошел успешно - то следующее значение автоинкрементного поля будет уже 33 . почему так??

может лучше перед вставкой какждый раз искать максимальное значение поля с автоинкрементов в таблице и не пользоватся этой фишкой SQLite? или есть еще способы
...
Рейтинг: 0 / 0
Почему в SQLite так криво работает автоинкремент?
    #39563051
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lexalex83,
читай доку почему не следует использовать автоинкремент
...
Рейтинг: 0 / 0
Почему в SQLite так криво работает автоинкремент?
    #39563139
lexalex83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так ты ответь, по производительности это будет быстрее если я каждый раз буду искать максимальное ID ?
...
Рейтинг: 0 / 0
Почему в SQLite так криво работает автоинкремент?
    #39563994
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Команды INSERT OR IGNORE/REPLACE нельзя использовать с автоинкрементным первичным ключом. Ни в одной СУБД которая понимает такой синтаксис.
Это дополнение для INSERT предназначено только для натуральных ключей, или не автоматических суррогатных.


lexalex83 так ты ответь, по производительности это будет быстрее если я каждый раз буду искать максимальное ID ? Прежде чем думать о производительности, подумай о правильности.
Если если ты единственный пользователь базы - то можешь самостоятельно вести учет суррогатного ключа.
Если у тебя есть шанс что в таблицу будут писать два пользователя - ручной подсчет суррогатного ключа становится невозможным.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Почему в SQLite так криво работает автоинкремент?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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