gpt4 book ai didi

mysql - 如何设置 MySQL 表中的最大行数?

转载 作者:IT老高 更新时间:2023-10-29 00:07:30 39 4
gpt4 key购买 nike

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

CREATE TABLE `table_with_limit` 
`id` int(11) DEFAULT NULL
) ENGINE=InnoDB MAX_ROWS=100000

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

我认为解决问题的唯一可能方法是使用 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 ;

请注意,COUNT 操作在大型 InnoDb 表上可能会很慢。

在 MySQL 5.5 上你可以使用 SIGNAL//RESIGNAL语句引发错误。

关于mysql - 如何设置 MySQL 表中的最大行数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8048001/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com