PHP-MySQL-How для безопасного постепенного увеличения целочисленного поля MySQL?

Я хочу увеличить значение поля безопасно с помощью php и mysql.

  1. Какую таблицу/поле я должен использовать?

  2. Существует ли минимальная версия MySQL, который я должен использовать?

  3. Каковы код SQL для этого, безопасная транзакция для MySQL?

41
задан nullVoid 29 November 2012 в 21:49
поделиться

3 ответа

Под каким типом «таблицы», я полагаю, вы имеете в виду механизм хранения. Все, что поддерживает мутации (т.е. не «архив» или «черная дыра»)

Подойдет любое числовое поле (tinyint, int, float и т. Д.). Тем не менее, нет специального кода PHP, только SQL для увеличения желаемого поля:

UPDATE table SET field = field + 1 WHERE [...]

Если вам нужна транзакция, упакуйте вышеуказанный запрос в транзакцию. Что касается версии MySQL, я согласен с @hsz - используйте самую последнюю возможную версию.

74
ответ дан 27 November 2019 в 00:31
поделиться

Если вы говорите о первичном ключе, то установите столбец id в качестве primary и auto_increment.

Увеличение поля выглядит следующим образом:

UPDATE table SET field = field + 1 WHERE id = 9

О версии MySQL - используйте самое новое, что можете;)
> 5.0 будет нормально.

7
ответ дан 27 November 2019 в 00:31
поделиться

1. какой тип таблицы/поля я должен использовать?

--> Тип таблицы зависит от того, что вы запланировали для вашего приложения. Это может быть Innodb или Myisam. Я предлагаю использовать числовые столбцы, чтобы их можно было увеличивать/уменьшать. Не делайте ее НЕПРЕВЫШЕННОЙ, если вы планируете разрешить отрицательные числа.

Вот ограничения, которые вы можете найти полезными при объявлении длины столбца:

TINYINT (length)  - 1 - Integer with unsigned range of 0-255 and a signed range from -128-127
SMALLINT (length)  - 2 - Integer with unsigned range of 0-65535 and a signed range from -32768-32767
MEDIUMINT(length)  - 3 -  Integer with unsigned range of 0-16777215 and a signed range from -8388608-8388607
INT(length)   - 4 - Integer with unsigned range of 0-429467295 and a signed range from -2147483648-2147483647
BIGINT(length)   - 8 -  Integer with unsigned range of 0-18446744 and a signed range from
-9223372036854775808-9223372036854775807

2.есть ли минимальная версия MySQL, которую я должен использовать?

--> Просто для использования автоинкремента? Вы вполне можете использовать актуальную версию. Я предлагаю что-нибудь > 5.2.4, если это возможно.

3.что за sql код для этой, безопасной транзакции для MySQL?

--> Извините, на данный момент нет ответа на этот вопрос.

2
ответ дан 27 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: