如何在MySQL表中设置最大行数?

我需要在MySQL表中设置行的最大限制。文档告诉我们可以使用以下SQL代码创建表:

CREATE TABLE `table_with_limit` 

`id` int(11) DEFAULT NULL

) ENGINE=InnoDB MAX_ROWS=100000

但是MAX_ROWS属性不是硬性限制(“存储不超过10万行并删除其他行”),而是数据库引擎的提示,该表将至少有10万行。

我看到的解决问题的唯一可能方法是使用BEFORE INSERT触发器,该触发器将检查表中的行数并删除较旧的行。但是我很确定这是一个巨大的过热:/

另一种解决方案是每N分钟使用cron脚本清除表。这是最简单的方法,但是仍然需要另一个系统来监视。

有人知道更好的解决方案吗?:)

回答:

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

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

// RESIGNAL语句引发错误。

以上是 如何在MySQL表中设置最大行数? 的全部内容, 来源链接: utcz.com/qa/434544.html

回到顶部