【问题标题】:Set minimum value of MySQL field - possible?设置 MySQL 字段的最小值 - 可能吗?
【发布时间】:2011-03-25 22:36:01
【问题描述】:

快速的新手 MySQL 问题。确保给定字段的最小值为 0 的最简单方法是什么?

基本上,我们有一个自动运行的脚本,它每 15 分钟从字段的值中减去一个整数值——但我们希望任何达到 0 的条目保持为 0 而不是负数。

这可以通过 PHP 中的循环简单地完成,但我试图限制对数据库的调用...

是否有一种简单的方法可以使字段的最小值为 0,或者使该字段中的任何负值自动变为 0?

谢谢!

【问题讨论】:

  • 只需更改您的更新查询以查找指定字段中大于 0 的值,或者更好的是,大于您将要减去的数量。
  • 哇。很简单。我总是忘记你可以在 WHERE 子句中使用条件。非常感谢!

标签: php sql mysql minimum


【解决方案1】:

您尝试过简单的条件“WHERE”还是问题比​​这更复杂?

UPDATE mytable SET mycolumn=mycolumn-1 WHERE mycolumn>0

【讨论】:

    【解决方案2】:

    您可以为您的字段设置 UNSIGNED 属性。如果您尝试将此字段设置为 ,mysql 将生成错误

    【讨论】:

    • 不。没有错误,只是一个警告。 MySQL 仍然会很乐意做减法。在一个基本的 unsigned int 字段上,0 - 1 = 4294967295
    • 是的,只是一个警告,但是插入的行是 0 而不是负值。刚刚在 mysql 5.1.41-3ubuntu12.6 上测试过,int(10) unsigned NOT NULL 列
    【解决方案3】:

    如果值已经为零,您可以将逻辑添加到脚本中以不从值中减去...

    更正负值的更新触发器,将它们设置为零是另一个想法。

    【讨论】:

      【解决方案4】:

      执行此操作的常用方法是CHECK 约束,但 MySQL 不支持。

      所以要么使列无符号和/或确保在您的应用程序逻辑中,您仅在值 > 0 时才减去该值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        • 2016-12-03
        • 1970-01-01
        • 2022-01-10
        相关资源
        最近更新 更多