Генерация следующего идентификатора в таблице innodb
У меня есть таблица InndoDB
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL,
`network_id` int(10) unsigned NOT NULL,
`nickname` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `network_id` (`network_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
В php я получаю (не важно откуда) массив $network_info
, который содержит пары network_id
,nickname
, Для тех network_id
которые присутствуют в users
Я хотел бы обновить их nickname
, Для тех, которых нет, я бы хотел вставить их в таблицу с сгенерированным (новое увеличение) id
,
Ранее я использовал id
как AUTO_INCREMENT, но такие запросы, как INSERT IGNORE
и так далее, увеличивайте его все время, даже если вставка не была сделана, и это не хорошо.
Какой лучший способ решить эту проблему?
1 ответ
Измени свой id
линия к этому -
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
Вы могли бы остаться с int(10), но я всегда нахожу, что лучше всего сделать так, чтобы идентификаторы выросли до огромных размеров на тот случай, если когда-нибудь понадобится.
И после CHARSET=ut8
, добавлять --
AUTO_INCREMENT=1;
Таким образом, таблица знает, с чего начать приращение.