Есть autoinc поле primary key типа integer. После вставки новых записей оно автоматически увеличивается. Как быстрее всего получить самое свежее значение?
Проще и быстрее всего выполнить SQL-запрос, обратившись к внутренним структурам SQLite, а не к таблице, которую вы только что меняли.
Например, структура таблицы tech_msg:
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TABLE [tech_msg]( [uin] INTEGER NOT NULL, [tech_id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, [msg_cmd] INTEGER NOT NULL, [packet_type] INTEGER NOT NULL, [body_json] VARCHAR NOT NULL, [dt_utc] DATETIME NOT NULL); CREATE INDEX [bytechmsg_uin_id] ON [tech_msg]( [uin], [tech_id]); |
Тогда запрос для получения последнего autoinc значения будет выглядеть так:
1 | SELECT seq FROM sqlite_sequence WHERE name = "tech_msg" |
Работает быстро, даже внутри транзакций. То, что надо.