2010-08-05 783 views
3

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

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

这可能与PHP循环中简单地完成,但我试图限制调用数据库...

有没有一种简单的方法要么使最小值为0场或使它所以放在该字段中的任何负值将自动变为0?

谢谢!

+0

只要改变你的更新查询查找值在指定字段是大于0或更好,大于你要减去的数量。 – kmfk 2010-08-05 17:21:17

+0

哇。很简单。我总是忘记你可以在WHERE子句中使用条件。非常感谢! – user405056 2010-08-05 18:02:12

回答

2

您可以为您的字段设置UNSIGNED属性。如果您尝试将此字段设置为<,

+0

不是。没有错误,只是一个警告。 MySQL仍然很乐意做减法。在一个基本的无符号整数字段中,'0 - 1 = 4294967295' – 2010-08-05 22:04:46

+0

是的,只是一个警告,但行插入0而不是负值。刚测试它在MySQL 5.1.41-3ubuntu12.6,诠释(10)无符号NOT NULL列 – 2010-08-06 07:52:58

4

您是否尝试过一个简单的条件“WHERE”或者是比这更复杂的问题?

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

哈哈,这真的很简单和智能:D – Hatim 2017-04-08 07:31:52

1

您可以在逻辑添加到您的脚本不值减去如果值已经是零时...

纠正负值,将它们设置为零是另一种思路的更新触发。

0

通常的做法是约定CHECK,但MySQL不支持。

因此,要么使列未签名和/或确保在您的应用程序逻辑你减去的值,只有当它是> 0

相关问题