代InnoDB表

代InnoDB表

问题描述:

下一个ID的我有一个InndoDB表代InnoDB表

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_idnickname(它不从何处无关紧要)。对于users中的network_id,我想更新他们的nickname。对于那些不存在的,我想用生成的(新增加的)id将它们插入到表中。

之前,我用id作为AUTO_INCREMENT,但是查询如INSERT IGNORE等等,即使在插入没有完成时也会增加它,并且它不好。

哪个是解决这个问题的最好方法?

+0

我并不认为'INSERT IGNORE'会增加auto_increment ID,但即使它确实没关系,因为该值应该完全透明 –

+0

请参阅http://stackoverflow.com/questions/5924762 /防止-自动增量-ON-mysql的重复的嵌件。会有很多尝试。这不好。 – Anton

+0

我在说的是auto_increment ID的实际值应该不重要 –

id行更改为这 -

`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 

你可以留在INT(10),但我总是觉得最好还是有可能使ID的增长到巨大的规模,以防万一有一天它的需要。

而且CHARSET=ut8后,加 -

AUTO_INCREMENT=1; 

这样,表就知道从何处开始递增。

+0

如何在没有auto_increment的情况下执行此操作?即使插入的尝试失败,它也会随时增加。它会跳出一段时间。 – Anton