Это работает, однако первичный ключ текущего столбца также будет автоматически увеличен.Как я могу запретить MySQL автоматически увеличивать первичный ключ в этих случаях?
Используя инструкцию UPDATE, когда значение уже существует:
IF EXISTS(SELECT NULL
FROM TABLE
WHERE vendor_name = $vendor_name) THEN
UPDATE TABLE
SET count = count + 1
WHERE vendor_name = $vendor_name
ELSE
INSERT INTO TABLE
(vendor_name)
VALUES
($vendor_name
END IF
Я попробовал альтернативуON DUPLICATE KEY UPDATE, ЗАМЕНИТЕ НА:
REPLACE INTO vendors SET vendor_name = 'foobar', COUNT = COUNT + 1
Обновляет счетчик и vendor_id, так что это хуже ...
База данных и данные не заботятся, если цифры неПоследовательное, только то, что значения являются уникальными.Если бы вы могли жить с этим, я бы использовал синтаксис ON DUPLICATE UPDATE, хотя я признаю, что поведение странное (понятно, если использовать оператор INSERT).