Задать вопрос

Как получить id последней записи в SQLite из другой сессии?

Реализую для себя проект домашнего счётчика энергии с последующим отображением потребления за м-лет. (может быть и за н-лет, посмотрим на сколько хватит ресурсов).

Электроника на базе Ардуино считывает показания 20 датчиков и по готовности, передаёт данные на сервер.

Сервер в виде небольшого роутера GL-AR150, под управлением OpenWRT, имеет на борту lighttpd, php5 и SQLite3. Arduino запускает скрипт обновления данных.

Алгоритм довольно прост:
  • Проверяем дату-время в которое были получены данные
  • Если в БД даташтамп на минуту mm уже есть, то добавляем к нынешним значениям и делаем инкремент коэффициэнта деления. Если нет даташтампа, то делаем новую запись с минутой mm+1
  • Обновляем данные в даташтампе на минуту mm, путём усреднения с помощью коэффициента


Возможно для сервера который будет работать почти без нагрузки, можно и над кодом не пыхтеть, а "состряпать" что-нибудь. Но душа просит изящного решения.

Собственно вопрос, в предыдущей сессии БД получила свою новую запись в виде новой строки или обновления старой. Как в новой сессии определить ID последний записи, если на нём стоит значение AUTOINCREMENT.

last_insert_rowid() - в новом соединении с БД выдаёт 0, или я его не правильно понял
max(id) - работает, но чопорно
select asc limit 1 - хуже чем max(id)

Если есть предложения по изменении алгоритма, то тоже буду рад новым идеям.
  • Вопрос задан
  • 636 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы