Вы можете сделать подсчет строк в своем приложении. Если он возвращает более четырех, или eaqual до пяти строк, вы удаляете последнюю строку перед вставкой новой.
UPDATE: я сделал немного тестирования на столе, который я назвал test_table
, и добавил этот триггер:
DELIMITER $$
CREATE TRIGGER `schema_name`.`trigger_name` BEFORE INSERT ON `database_name`.`test_table`
FOR EACH ROW
if (select count(*) from test_table)> 4 /* count records to see if it exeeds your limit */
then
delete from test_table where id=(SELECT MAX(id) FROM test_table LIMIT 1); /* delete last row */
END if;
END
Когда я пытаюсь вставить шестую строку я получаю эту ошибку:
ERROR 1442: 1442: Can't update table 'test_table' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Я искал и нашел этот ответ: https://stackoverflow.com/a/21117071/1355562 - что привело меня к http://dev.mysql.com/doc/refman/5.6/en/stored-program-restrictions.html.
В разделе «Ограничения для хранимых функций», пункт 5, говорит: «... не может изменить таблицу, которая уже используется ...»
Похоже, вы должны сделать это в вас приложения бро;)
ops .. только что заметил, что вы работаете с MySQLlite .. Может быть, все по-другому. Это было для MySQL ... Извините, что ...
Этот тип операции обычно обрабатывается триггером вставки. Я не знаю, является ли это «простым». –
Можете ли вы сказать мне один пример триггера insert в SQLite bro :) –
Я удалил тег MySQL, потому что вопрос, похоже, о SQLite. –