$q = $db->prepare('INSERT IGNORE INTO Cities (Name,Stamp) VALUES (?,?)');
$q->execute(array($city,$stamp));
Я использую этот код для вставки новых городов в таблицу городов. Я только заметил, что каждый запрос увеличивает поле id, и это не то, что я хочу. Не то, чтобы я полагался на значения id без пробелов, но смешно увеличивать их при каждом запуске кода.
Итак, какой умный SQL-запрос я могу запустить, чтобы дать мне ту же функциональность, не выполняя два запроса (сначала SELECT, затем INSERT), и это не auto_increment?
Описание таблицы:
Field Type Null Key Default Extra
id int(11) NO PRI NULL auto_increment
Name varchar(100) YES UNI NULL
countryid int(11) YES NULL
Stamp int(11) YES NULL
uid int(11) YES NULL
Код:
INSERT INTO Cities (Name,Stamp) VALUES (?,?) ON DUPLICATE KEY UPDATE Name = Name
увеличивает значение в моей таблице. Версия MySQL - 5.5.9. Ядром базы данных является innoDB.
Возможно, это может быть ошибка: http://bugs.mysql.com/bug.php?id=28781
Если вы прокрутите вниз до дна, вы увидите, что это все еще проблема, три года спустя ...