php – MySQL INSERT … ON DUPLICATE UPDATE – 将一个添加到自动增量
我跟踪所有访问我的http_user_agents,一个简单的命中计数器.
问题是我的自动增量字段仍然增加,即使我们没有插入一个字段.我该怎么防止这个? $sql = "INSERT INTO `db_agency_cloud`.`tblRefHttpUsersAgent` SET `http_users_agent` = :UsersAgent,`created_ts` = NOW() ON DUPLICATE KEY UPDATE `hits` = `hits` + 1"; 这是Table结构: CREATE TABLE `tblRefHttpUsersAgent` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT,`http_users_agent` varchar(255) NOT NULL,`hits` int(20) unsigned NOT NULL DEFAULT '1',`created_ts` datetime NOT NULL,`activity_ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`),UNIQUE KEY `http_users_agent` (`http_users_agent`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;INSERT … ON DUPLICATE KEY UPDATE被描述为“混合模式插入”,用于InnoDB的AUTO_INCREMENT处理.混合模式插入基本上是已知最大数量的AUTO_INCREMENT值,但实际需要的量不是. 混合模式插入被默认处理,如MySQL docs中所述:
如果您使用InnoDB,您的替代方案是: >避免INSERT … ON DUPLICATE KEY UPDATE. 注意:在MyISAM下,AUTO_INCREMENT处理完全不同,不会出现此行为. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |