У меня есть база данных sqlite (на android), где я хочу хранить последние N записей некоторых данных.сохранить последние n записей в таблице
Первичный ключ таблицы - это поле даты. В основном, когда я вставляю какую-либо строку после достижения порога, я хочу удалить самую старую запись из таблицы.
Есть ли особенно умный/хороший способ сделать это? Обратите внимание, что я всегда проверяю инвариант (nr rows < = THRESHOLD) после каждой вставки, поэтому нам не нужно иметь дело ни с чем, кроме как с удалением самой старой записи.
Что я собираюсь сделать, это в основном:
- вставки данных
- если количество (*) таблицы < = ПОРОГ: Гото 4
- DELETE FROM таблицы WHERE даты == (SELECT дата из таблицы порядок по дате ASC LIMIT 1);
- СДЕЛАНО
Примечание Я использую ORMlite, но так как нет никаких пользовательских данных, участвующих я могу просто использовать сырые SQL, так что не должно быть проблемой.
Не нарушает ли это правило подзапроса одного значения? 3.DELETE FROM table WHERE date == (SELECT date from table order by date ASC); –
@ Крис Там должно быть хотя бы 1 предел 1 да. Но его следует рассматривать как псевдокод - я все еще думаю о том, как его лучше всего реализовать - я просто подумал, что какой-то код упростит его понимание. – Voo