SQL как извлечь AUTOINCREMENT при вставлении новой строки
я использую столбец с AUTOINCREMENT чтобы каждая строка имела собственный идентификатор. И мне нужно как то узнавать его при создании новой строки, можно ли это как нибудь сделать?
Ответы (1 шт):
Можно посмотреть на системную таблицу sqlite_sequence. Ваша база данных sqlite будет иметь эту таблицу автоматически, если вы создали любую таблицу с автоинкрементным первичным ключом. Эта таблица предназначена для sqlite для отслеживания поля автоинкремента, чтобы он не повторял первичный ключ даже после удаления некоторых строк или после неудачной вставки (подробнее об этом здесь).
Таким образом, с этой таблицей есть дополнительное преимущество, заключающееся в том, что вы можете узнать первичный ключ вновь вставленного элемента, даже после того, как вставили что-то еще (в других таблицах, конечно!). Убедившись, что вставка прошла успешно (в противном случае вы получите ложное число), вам просто нужно сделать:
select seq from sqlite_sequence where name="table_name"
Если использовать функцию last_insert_rowid(), то результат таким же, потому что если выполняется INSERT в базу данных во время работы функции last_insert_rowid() то это изменяет последний идентификатор строки вставки, и возвращаемое last_insert_rowid(), непредсказуемо и может не совпадать ни со старым, ни с новым последним rowid.