• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Mysql Типы полей (INT)
r0m1ntik
Центурион
Добрый день,

Таков вопрос: Как изменить значение типа INT в MySQL чтобы цифры шли от 0 до 4294967295 а не от -2147483648 до 2147483647 ?
Вот мой код: `coins` int(10) unsigned NOT NULL DEFAULT '0',

Проблема в том что этот 'coins' это бонусы, но если отнять у него 1 (0 - 1 = -1) в игре пишется 4294967295.
Я хочу чтобы даже если отнять 1 было вот так ( 0 - 1 = 0). Сделать 0 минимальной (без минусовых цифр).

С меня плюсик smile
Сообщение # 1 написано 19.09.2016 в 15:04
p620
Маршал
Вы противоречите сами себе:
Цитата r0m1ntik ()
чтобы цифры шли от 0 до 4294967295 а не от -2147483648 до 2147483647

Цитата r0m1ntik ()
в игре пишется 4294967295


Проблема в том, что Вы жалуетесь на основы беззнаковой целочисленной арифметики.
Код
0x00000000 - 0x00000001 = 0x00000000 + (-0x00000001) = 0x00000000 + (~0x00000001 + 0x1) = 0x00000000 + (0xFFFFFFFE + 0x1) = 0x00000000 + 0xFFFFFFFF = 0xFFFFFFFF (что и является полученным Вами числом, представленным в десятичной системе счисления)

Не уверен, возможно ли в MySQL установить какую-то особую обработку подобной ситуации для конкретного поля, но совершенно точно знаю, что ее легко вычленить запросом, вроде:
Код
UPDATE `N` SET `coins` = `coins` - 1 WHERE ... AND `coins` != '0';

Вместо троеточия, соответственно, следует подставить исходное условие.
Сообщение # 2 отредактировано p620 - Понедельник, 19.09.2016, 16:44
r0m1ntik
Центурион
p620, Спасибо о проверке чтото не подумал smile
Проблема решена можно удалять тему.
Сообщение # 3 написано 19.09.2016 в 18:27
  • Страница 1 из 1
  • 1
Поиск: