3

可能重复:
如何设置 MySQL 表中的最大行数?

是否有可能(以及如何)对 MySQL 表设置限制(比如说 100'000 )并在达到限制时删除旧条目?

意思是,当我有 100'000 个条目并且出现 100'001 时,将删除 ID 最小的条目并创建新条目(当然使用新 ID)。

我希望 MySQL 自己处理这个问题,所以不需要外部脚本干预。

我需要这个来记录日志,也就是说,我只想将日志保留一段时间,比如一周。也许 MySQL 有可能只删除超过 1 周的条目?

4

1 回答 1

2

我建议触发器。这是确保在每次插入时都考虑最大表大小的最佳方式。

如何在 MySQL 表中设置最大行

从那个接受的答案:


尝试限制向表中添加新记录。当要添加新记录时引发错误。

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 语句来引发错误。

于 2013-01-11T16:06:24.310 回答