InnoDB auto_increment值在DUPLICATE KEY UPDATE上疯狂

时间:2014-02-23 16:43:24

标签: php mysql

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?显然在我的情况下,这种默认行为是不可行的。有什么想法吗?

0 个答案:

没有答案