Есть ли способ получить последний вставленный идентификатор строки определенной таблицы в SQLite3? Существует функция last_insert_rowid, которая возвращает rowid самого последнего успешного INSERT в rowid стол или виртуальный стол. Однако я хочу знать, есть ли такой метод для получения последнего вставленного идентификатора строки конкретной таблицы.
Последний вставленный идентификатор строки определенной таблицы в SQLite3
Ответы (1)
Последние вставленные rowid
всех таблиц хранятся во внутренней таблице sqlite_sequence
, которую можно запросить, например любой другой стол. Убедитесь, что ваш идентификатор первичного ключа имеет атрибут autoincrement
, иначе его там нет.
sqlite> create table Test1 (id integer primary key autoincrement, text string);
sqlite> create table Test2 (id integer primary key autoincrement, text string);
[...] -- Insert rows here
sqlite> select rowid from Test1;
id
----------
1
2
sqlite> select rowid from Test2;
id
----------
1
2
3
sqlite> select * from sqlite_sequence;
name seq
---------- ----------
Test1 2
Test2 3
person
Murphy
schedule
09.09.2019
Обоснованное предположение: нет, потому что они не контролируются движком SQLite. Но, честно говоря, я не знаю, так как я никогда не работал с виртуальными таблицами, у меня нет тестовой среды, чтобы исследовать это для вас, и я не нашел ресурса, который рассматривает эту деталь. Итак, вместо того, чтобы ждать ответа, который может никогда не прийти, почему бы вам не узнать его самому? Вам потребуется три оператора SQL, чтобы получить первое представление, если вы действительно используете виртуальные таблицы.
- person Murphy; 11.09.2019
SELECT max(rowid) FROM yourtable
обычно работает, если ничто не вставляет строки с указанными пользователем значениями rowid. - person Shawn   schedule 09.09.2019