ON DUPLICATE KEY UPDATE导致自动增量值增加。我有一个功能,每个用户登录检查和更新社交网络的用户配置文件。显然这意味着用户很少,ID已经在1000000 +
看起来像这样:
public function update_usermeta($user_id,$user_profile,$access_token)
{
$user_profile->accessToken = $access_token;
$sql = 'INSERT INTO users_meta
(user_id,meta_key,meta_value)
VALUES (:user_id,:meta_key,:meta_value)
ON DUPLICATE KEY
UPDATE meta_value = VALUES(meta_value)';
foreach ($user_profile as $meta_key => $meta_value) {
if ($meta_value == null OR $meta_value == "") {continue;}
if ($meta_key == "identifier" OR $meta_key == "photoURL" OR $meta_key == "displayName" OR $meta_key == "email") {continue;}
$params = array(
':meta_key' => $meta_key,
':meta_value' => $meta_value,
':user_id' => $user_id
);
$this->mysql_execute_query($sql,$params);
}
}
我在SO上发现了几个讨论这种行为的主题:
prevent autoincrement on MYSQL duplicate insert
Why does MySQL autoincrement increase on failed inserts?
但是这些主题来自2009年,相当过时,并且正在谈论mysql v 5.1。
我的问题是,是否有新技术可以避免更新时的auto_increment?显然在我的情况下,这种默认行为是不可行的。有什么想法吗?