【问题标题】:Can we limit the number of rows in a table in MySQL?我们可以限制 MySQL 中表中的行数吗?
【发布时间】:2010-07-02 12:49:44
【问题描述】:

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

【问题讨论】:

  • 我将此作为评论而不是答案,因为我从未使用过 MySQL,但在其他数据库中,您可以使用 CHECK 约束来完成此操作((SELECT COUNT(*) FROM table)

标签: mysql


【解决方案1】:

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

select top 1000 entityID, entityName from TableName

而不是物理限制表格的行数。

但是,如果您真的想将其限制为 1000 行:

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

【讨论】:

  • 我想你的意思是:从 TableName 中删除 entityID 不在(从 TableName 中选择前 1000 个 entityID)
  • 我喜欢你反对限制行数的警告。在我看来,封闭世界假设中的表谓词很少需要这样的限制,而限制自然不会来自数据本身。我能想到的异常(例如,TopTenContestants)最好由视图而不是基本关系来处理。
【解决方案2】:

Mysql 在创建(并且可能更改?)表时支持 MAX_ROWS 参数。 http://dev.mysql.com/doc/refman/5.0/en/create-table.html

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2015-09-20
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多