Уменьшение в MySQL проходит после нуля - PullRequest
1 голос
/ 29 ноября 2009

Я пытаюсь сделать это в MySQL:

ОБНОВЛЕНИЕ таблицы SET значение = значение - 1 ГДЕ бла-бла

Если значение равно 0, и это значение прогона установлено на 4294967295. Это потому, что это целое число без знака, поэтому оно возвращается к максимальному значению.

Как мне сделать так, чтобы вместо этого он оставался на нуле? Могу ли я сделать это чисто в SQL?

Ответы [ 5 ]

12 голосов
/ 29 ноября 2009
`AND value > 0`
3 голосов
/ 29 ноября 2009
SET value = IF(value=0,0,value-1)
2 голосов
/ 29 ноября 2009

Используйте предложение where, чтобы сказать значение> 0

В воскресенье вечером SQL тоже всегда ранит меня. : -)

1 голос
/ 29 ноября 2009

Просто добавьте в строку SQL AND value > 0

0 голосов
/ 29 ноября 2009

Вы можете запустить второй запрос или оператор if, проверив, установлено ли оно на максимум и вернув его к 0. Но это какая-то глупость ...

Напишите быструю функцию, которая проверяет запись, если она уже равна 0, не выполняйте никаких запросов на обновление.

(if value >= 0, do not perform xy)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...