可能重复:
How can I set a maximum number of rows in MySQL table?
是否有可能(以及如何)限制MySQL表(假设为100'000)并在限制到达时删除旧条目?
意思是,当我有100'000个条目并且出现100'001时,删除ID最小的条目并创建新条目(当然使用新ID)。
我希望MySQL自己处理这个问题,所以外部脚本不需要干涉。
我需要这个用于记录目的,这意味着,我想只保留一段时间的日志,比方说一周。也许MySQL可能只是删除条目,这些条目比它自己的一周还要早?
答案 0 :(得分:2)
我建议触发器。这是确保在每次插入时考虑最大表大小的最佳方法。
How can I set a maximum number of rows in MySQL table? 的可能重复
从那个接受的答案:
尝试限制向表中添加新记录。要添加新记录时引发错误。
DELIMITER $$
CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
SELECT COUNT(*) INTO @cnt FROM table1;
IF @cnt >= 25 THEN
CALL sth(); -- raise an error
END IF;
END
$$
DELIMITER ;
请注意,对于大型InnoDb表,COUNT操作可能会很慢。
在MySQL 5.5上,您可以使用SIGNAL语句引发错误。