我有一些MySQL代码:
CREATE TABLE test_table (
id int(11) NOT NULL AUTO_INCREMENT,
count int(10) unsigned DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
insert into test_table (count) values (1);
update test_table set count = IF( count -1 < 0, 0 , count -1 );
update test_table set count = IF( count -1 < 0, 0 , count -1 );
Run Code Online (Sandbox Code Playgroud)
如果,这应该将计数设置为零(count -1) < 0.
我收到一个错误:
Error Code: 1264 Out of range value for column 'count' at row 1` instead.
Run Code Online (Sandbox Code Playgroud)
这是因为count是一个unsigned int.如果我使用signed int就可以了.
这是MySQL中的错误吗?我正在使用: mysql Ver 14.14 Distrib 5.1.46sp1, for Win32 (ia32)
我想你应该这样做:
UPDATE test_table
SET count = IF( count < 1, 0 , count -1 )
Run Code Online (Sandbox Code Playgroud)
count - 1当count为零时,下溢的值.
SELECT count, count - 1 FROM test_table; +-------+----------------------+ | count | count - 1 | +-------+----------------------+ | 0 | 18446744073709551615 | | 1 | 0 | | 2 | 1 | +-------+----------------------+
当我尝试你的查询时,它不起作用......但它不会以你看到的相同方式失败.