我们可以在MySQL中限制表中的行数吗?

我们可以在MySQL中限制表中的行数吗?,mysql,Mysql,可以在MySQL中设置表可以容纳的行数吗? 我不想使用任何java代码。我想使用纯mysql脚本来实现这一点。mysql在创建和修改时支持MAX_ROWS参数?一张桌子 编辑:遗憾的是,这只是优化的一个提示 计划在表中存储的最大行数。这不是一个硬限制,而是一个提示,提示存储引擎表必须能够存储至少这么多行 。。你的问题暗示脚本是可以的;让一个任务像cron作业一样简单,定期将表行放在给定ID之上,这是荒谬的吗?当某些东西试图添加太多的行时,mysql抛出错误,这并不像它那样优雅,但它可以完成这项工

可以在MySQL中设置表可以容纳的行数吗?
我不想使用任何java代码。我想使用纯mysql脚本来实现这一点。

mysql在创建和修改时支持MAX_ROWS参数?一张桌子

编辑:遗憾的是,这只是优化的一个提示

计划在表中存储的最大行数。这不是一个硬限制,而是一个提示,提示存储引擎表必须能够存储至少这么多行


。。你的问题暗示脚本是可以的;让一个任务像cron作业一样简单,定期将表行放在给定ID之上,这是荒谬的吗?当某些东西试图添加太多的行时,mysql抛出错误,这并不像它那样优雅,但它可以完成这项工作——你可以让你的应用程序也检查它的ID是否太高,并向用户/相关方发出警告。

我不建议尝试限制SQL表中的行数,除非您有很好的理由这样做。您最好使用以下查询:

select top 1000 entityID, entityName from TableName
而不是物理上限制表的行

但是,如果确实要将其限制为1000行:

delete from TableName where entityID not in (select top 1000 entityID from TableName)

我将此作为注释而不是答案,因为我从未使用过MySQL,但在其他数据库中,您可以通过检查约束SELECT COUNT*FROM table来完成此操作。我想您的意思是:从TableName中删除entityID,其中entityID不在SELECT top 1000 entityID表单TableName中。我喜欢您对限制行的警告。在我看来,在封闭世界假设中,表的谓词很少需要这样的限制,而且这种限制不会自然地从数据本身产生。我能想到的例外情况,例如,TopTenCompetities最好由视图而不是基本关系来处理。