LINUX.ORG.RU

создать триггер для удаления самой ранней записи если записей больше 1000

 


0

1

Грубо говоря задача такая - надо хранить в таблице 1000 сообщений (максимум).

То есть если мы вставляем сообщение, то надо удалять самое ранее

Я написал триггер

create trigger delete_old before insert ON db_messages for each row delete from db_messages order by msg_time limit 1;

Но данный триггер будет удалять самую раннюю запись всегда (то есть не будет проверять на размер 1000). А как сделать триггер для моего случая?

★★★★★

Последнее исправление: Dudraug (всего исправлений: 1)

Есть несколько способов. Из того что пришло в голову:

delete from table where id < max(id)-1000

Не совсем sql, но принцип ты понял. Хотя, в stackoverflow рекомендовали применить partitioning и mysql event scheduler.

В общем, да, думаю, лучше просто периодически чиститить чем это делать на каждой вставке.

true_admin ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.