Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Почему в SQLite так криво работает автоинкремент? / 4 сообщений из 4, страница 1 из 1
02.12.2017, 16:33
    #39563031
lexalex83
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Почему в SQLite так криво работает автоинкремент?
Что то мне не нравится как работает автоинкремент в SQLite..

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

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

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

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

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

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


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


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