Larave mysql removes old records
Подскаите, хочу установить триггер на таблицу.
BEGIN
DELETE FROM dashboard_statistics WHERE user_id = new.user_id AND
created_at < (NOW() - INTERVAL 90 DAY);
END
Вставке sql запроса.
insert into `dashboard_statistics` (`user_id`,
`data_visualizations`, `attribute`, `total`, `updated_at`,
`created_at`) values (6, 'matches', 'email', total + 1, '2022-
05-31 13:01:04', '2022-05-31 13:01:04')
Ошибку которую получаю.
General error: 1442 Can't update table 'dashboard_statistics' in stored
function/trigger because it is already used by statement which invoked this stored
function/trigger.
Я хочу,чтобы таблица сама очищалась от записей для каждого пользователя старше 90 дней и не следить за ней.
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
Я хочу, чтобы таблица сама очищалась от записей для каждого пользователя старше 90 дней и не следить за ней.
CREATE EVENT remove_old_rows_from_dashboard_statistics
ON SCHEDULE
EVERY 1 DAY
STARTS '2022-01-01'
DO
DELETE
FROM dashboard_statistics
WHERE created_at < CURRENT_DATE - INTERVAL 90 DAY;
Само собой Event Scheduler надо не забыть включить - event_scheduler = ON в файле конфигурации или опцией в командной строке сервиса.
Если надо, чтобы единственная запись не удалялась - добавить в запрос ещё одну копию таблицы с соотв. условием связывания.