当前位置: 首页 > 面试题库 >

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

雍兴修
2023-03-14
问题内容

我需要在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语句引发错误。



 类似资料:
  • 问题内容: 我有一个XML文档,其中包含大约48,000个子级(〜50MB)。我运行INSERT MYSQL查询,为这些子项中的每个子项都创建新条目。问题是,由于其大小,它需要很多时间。执行后,我收到这个 如何将最大执行时间设置为无限制? 谢谢 问题答案: 您可以通过在您的php代码中设置set_time_limit来实现(无限制地设置为0) 或者直接在您的php.ini中修改max_execut

  • 我正在Windows上使用PyCharm,希望更改设置以将最大行长度限制为个字符,而不是默认限制为

  • 运行新页时,必须使用函数指定视口的大小:

  • 目前我的Python pyCharm控制台会返回: 我想在pyCharms python控制台自动换行之前增加字符数。这似乎建议更改< code >代码样式选项卡中的设置,但对我不起作用。也许因为其他问题指的是一个老版本的Pycharm。有什么解决办法吗?

  • 我的SO或Google搜索发现了很多关于Eclipse的资料,但没有关于Android Studio的资料。

  • 查看以下: 问题是它不会在ipython笔记本中按默认值打印所有行,但我必须切片才能查看结果行。即使以下选项也不会更改输出: 有人知道如何显示整个阵列吗?