无法分配负值

时间:2011-12-20 06:36:52

标签: php mysql

UPDATE posts set votes=votes+1 where id='$id'

当值为零时,上面有效,但当i减去(当前值为0)时:

UPDATE posts set votes=votes-1 where id='$id'

发生错误。为什么会这样?

数据类型为int

4 个答案:

答案 0 :(得分:3)

ALTER TABLE posts MODIFY votes BIGINT SIGNED DEFAULT 0;

这样的事情应该会有所帮助。

答案 1 :(得分:2)

使投票栏签名(因此取消勾选未签名的复选框)。

无符号整数列(在大多数工具中是默认值)只能包含正整数。有符号整数有一个额外的位 - (所以它们支持负值)。

答案 2 :(得分:1)

按照 Leon

的建议,首先运行查询以使投票成为已签名的列
ALTER TABLE t1 MODIFY votes BIGINT SIGNED;

答案 3 :(得分:1)

你无疑拥有unsigned integral types之一。这些都具有零的最小值,因此您不能使这些类型为负。

更改代码以便不会发生这种情况或将数据类型更改为已签名的代码。

前者可以通过以下方式完成:

update posts set votes = votes - 1 where id = '$id' and votes > 0

后者有类似的东西:

alter table post modify votes int signed