|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Mysql Типы полей (INT) |
Mysql Типы полей (INT) |
Добрый день,
Таков вопрос: Как изменить значение типа 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 минимальной (без минусовых цифр). С меня плюсик
Сообщение # 1 написано 19.09.2016 в 15:04
|
Вы противоречите сами себе:
Проблема в том, что Вы жалуетесь на основы беззнаковой целочисленной арифметики. Код 0x00000000 - 0x00000001 = 0x00000000 + (-0x00000001) = 0x00000000 + (~0x00000001 + 0x1) = 0x00000000 + (0xFFFFFFFE + 0x1) = 0x00000000 + 0xFFFFFFFF = 0xFFFFFFFF (что и является полученным Вами числом, представленным в десятичной системе счисления) Не уверен, возможно ли в MySQL установить какую-то особую обработку подобной ситуации для конкретного поля, но совершенно точно знаю, что ее легко вычленить запросом, вроде: Код UPDATE `N` SET `coins` = `coins` - 1 WHERE ... AND `coins` != '0'; Вместо троеточия, соответственно, следует подставить исходное условие. |
| |||
| |||