【发布时间】:2011-10-28 14:35:40
【问题描述】:
我用一个简单的计数器跟踪所有访问我的 http_user_agents。 下面在数据库中插入 http_user_agent,该字段不区分大小写并且是唯一的。因此,当我们尝试插入它并找到一个 DUPLICATE KEY 时,它会将 hits 字段加 1。
问题是即使我们没有插入字段,我的自动增量字段仍然会增加。我怎样才能防止这种情况发生?
$sql = "INSERT INTO `db_agency_cloud`.`tblRefHttpUsersAgent` SET `http_users_agent` = :UsersAgent, `created_ts` = NOW() ON DUPLICATE KEY UPDATE `hits` = `hits` + 1";
这是表格结构:
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;
【问题讨论】: