UNSIGNED поле выставляется в максимум при вычитании

sunyang

Новичок
Делаю вот такой запрос:

PHP:
UPDATE `product_1C` SET `quantity` = ( `quantity` + ( -36 ) ) WHERE `id` =0000000128
поле quantity INT(11) UNSIGNED


quantity = 32

В таком случае, я предполагал, что в результате quantity получится рвным -2 и установится в 0, но почему-то значение в quantity становится равным 4294967295

Почему так происходит?
 

Вурдалак

Продвинутый новичок
Ну потому что SIGNED -1 == UNSIGNED 4294967295.

P.S. Хотя правильнее было бы на месте СУБД выдать ошибку.
 
Последнее редактирование:

Vladson

Сильнобухер
В таком случае, я предполагал, что в результате quantity получится рвным -2 и установится в 0, но почему-то значение в quantity становится равным 4294967295
Вы были правы, так оно и вышло, quantity получился именно рвным -2 (только обнуляться ему не с чего)
Просто если эти данные записать в другом виде, то получится 4294967295, что и случилось
 
Сверху