代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_id
,nickname
(它不从何处无关紧要)。对于users
中的network_id
,我想更新他们的nickname
。对于那些不存在的,我想用生成的(新增加的)id
将它们插入到表中。
之前,我用id
作为AUTO_INCREMENT,但是查询如INSERT IGNORE
等等,即使在插入没有完成时也会增加它,并且它不好。
哪个是解决这个问题的最好方法?
答
您id
行更改为这 -
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
你可以留在INT(10),但我总是觉得最好还是有可能使ID的增长到巨大的规模,以防万一有一天它的需要。
而且CHARSET=ut8
后,加 -
AUTO_INCREMENT=1;
这样,表就知道从何处开始递增。
+0
如何在没有auto_increment的情况下执行此操作?即使插入的尝试失败,它也会随时增加。它会跳出一段时间。 – Anton
我并不认为'INSERT IGNORE'会增加auto_increment ID,但即使它确实没关系,因为该值应该完全透明 –
请参阅http://stackoverflow.com/questions/5924762 /防止-自动增量-ON-mysql的重复的嵌件。会有很多尝试。这不好。 – Anton
我在说的是auto_increment ID的实际值应该不重要 –