Увеличить поле базы данных на 1

Я предпочитаю графический интерфейс при создании таблиц, потому что лучше визуализировать макет. В GUI-дизайнере можно добавить описание для таблицы и столбцов в окне свойств, как показано на рисунке ниже alt text [/g0]

140
задан Matt 4 May 2010 в 05:11
поделиться

4 ответа

Обновление записи:

Для этого достаточно простого инкремента.

UPDATE mytable 
  SET logins = logins + 1 
  WHERE id = 12

Вставка новой строки или обновление уже существующей:

Если вы хотите обновить ранее существующую строку или вставить ее, если она еще не существует, вы можете использовать синтаксис REPLACE или опцию INSERT...ON DUPLICATE KEY UPDATE (Как Rob Van Dam продемонстрировал в своем ответе).

Вставка новой записи:

Или, возможно, вы ищете что-то вроде INSERT...MAX(logins)+1? По сути, вы должны выполнить запрос, похожий на следующий - возможно, немного более сложный в зависимости от ваших конкретных потребностей:

INSERT into mytable (logins) 
  SELECT max(logins) + 1 
  FROM mytable
272
ответ дан 23 November 2019 в 22:19
поделиться

Я не эксперт в MySQL, но вам, вероятно, следует посмотреть на триггеры, например ПЕРЕД ВСТАВКОЙ. В триггере вы можете запустить запрос выбора для исходной таблицы, и если он что-то обнаружил, просто обновите строку «логины» вместо того, чтобы вставлять новые значения. Но все это зависит от версии MySQL, которую вы используете.

2
ответ дан 23 November 2019 в 22:19
поделиться

Если вы можете безопасно сделать (firstName, lastName) ПЕРВИЧНЫЙ КЛЮЧ или, по крайней мере, поместить на них УНИКАЛЬНЫЙ ключ, то вы можете сделать следующее:

INSERT INTO logins (firstName, lastName, logins) VALUES ('Steve', 'Smith', 1)
ON DUPLICATE KEY UPDATE logins = logins + 1;

Если вы не можете этого сделать, вам придется сначала получить то, что является первичным ключом, поэтому я не думаю, что вы могли бы достичь того, чего хотите, с помощью одного запроса.

70
ответ дан 23 November 2019 в 22:19
поделиться

Вы не сказали, что вы пытаетесь сделать, но вы достаточно хорошо намекнули на это в комментариях к другому ответу. Я думаю, что вам, вероятно, нужен столбец с автоматическим инкрементом

create table logins (userid int auto_increment primary key, 
  username varchar(30), password varchar(30));

, тогда при вставке не потребуется никакого специального кода. Просто

insert into logins (username, password) values ('user','pass');

В MySQL API есть функции, позволяющие узнать, какой userid был создан при выполнении этого оператора в клиентском коде.

2
ответ дан 23 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

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