Вася Патриков
Новичок
Максимальные значения полей типа int. Откуда они такие беруться ?
Есть такая табличка:
Новые строки в таблице появляются по выполнению следующих запросов:
Обновляются при помощи таких:
Как видно нет никакой возможности выставить какое либо конкретное значение, только +-1. Однако при это в таблице наблюдаются вот такие аномалии:
16777215 - это максимальное значение для типа mediumint на текущей системе... но я уверен на все 100% в данных случаях, что не мог UPDATE-запрос выполниться 16777215 раз. Так откуда тогда такие числа там беруться ?
Есть такая табличка:
PHP:
CREATE TABLE `battle_stat` (
`person_id` int(10) unsigned NOT NULL,
`opponent_id` int(10) unsigned NOT NULL,
`score_1` mediumint(8) unsigned NOT NULL default '0',
`score_2` mediumint(8) unsigned NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8
PHP:
INSERT `battle_stat` SET `person_id` = 111, `opponent_id` = 222, `score_1` = 1
INSERT `battle_stat` SET `person_id` = 111, `opponent_id` = 222, `score_2` = 1
PHP:
UPDATE `battle_stat` SET `score_1` = `score_1` + 1 WHERE `person_id` = 111 AND `opponent_id` = 222
UPDATE `battle_stat` SET `score_2` = `score_2` + 1 WHERE `person_id` = 111 AND `opponent_id` = 222
UPDATE `battle_stat` SET `score_1` = `score_1` + 1, `score_2` = `score_2` - 1 WHERE `person_id` = 111 AND `opponent_id` = 222
UPDATE `battle_stat` SET `score_2` = `score_2` + 1, `score_1` = `score_1` - 1 WHERE `person_id` = 111 AND `opponent_id` = 222
PHP:
mysql> SELECT * FROM `battle_stat` WHERE `score_1` > 10000 LIMIT 5;
+-----------+-------------+----------+---------+
| person_id | opponent_id | score_1 | score_2 |
+-----------+-------------+----------+---------+
| 466 | 1363 | 16777215 | 2 |
| 1355 | 2530 | 16777215 | 2 |
| 1108 | 3169 | 16777215 | 2 |
| 2341 | 3169 | 16777215 | 2 |
| 158 | 3897 | 16777215 | 2 |
+-----------+-------------+----------+---------+