pdo ограничение количества записей в базе

203
25 мая 2018, 15:30

Задача хранить некую статистику на 30 дней в БД. Дабы не нагружать ее лишним хламом требуется в базе иметь не более 30 записей. То есть при добавлении новой удаляется самая старая. Возможно реализовать подобное средствами myAdmin или pdo? Читал что тригеры могут помочь, но так и не получилось их реализовать под мою задачу.

Answer 1

Пусть имеется некая:

CREATE TABLE stat ( dt TIMESTAMP
                       DEFAULT CURRENT_TIMESTAMP 
                       ON UPDATE CURRENT_TIMESTAMP
                  , stat_data SOMETYPE );

Сразу заполняем её нужным количеством записей:

INSERT INTO stat (statdata) SELECT NULL; -- и так 30 раз

Добавление новой и удаление самой старой записи выполняется запросом:

UPDATE stat
SET statdata = @new_data
ORDER BY dt ASC
LIMIT 1;

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

READ ALSO
Error updating record: You have an error in your SQL syntax

Error updating record: You have an error in your SQL syntax

Выдает такую ошибку

190
Как сделать перенос данных на новую базу c другой структурой?

Как сделать перенос данных на новую базу c другой структурой?

В общем, делаем проект на Laravel, те обновляем старый кастомный проект

192
Laravel: как реализовать правильный роутинг?

Laravel: как реализовать правильный роутинг?

Есть 3 сущности: Categories->Subcategories->Photos (3 таблицы, 3 контроллера, 3 модели)Нужно реализовать CRUD для каждой сущности

215
Книги и учебные ресурсы по PHP

Книги и учебные ресурсы по PHP

Рекомендуемая литература, курсы и документация по PHP

208