recherche

Maison  >  Questions et réponses  >  le corps du texte

Effectuer une insertion dans la base de données pour détecter les erreurs de clé en double

Mon application peut insérer des données de clé primaire en double, mon doute est de savoir quel est le moyen le plus efficace de vérifier si la clé existe déjà avant l'insertion, ou simplement d'insérer et de laisser la banque renvoyer une erreur puis de la gérer ? Lequel a le moins d’impact ? Merci

P粉920835423P粉920835423271 Il y a quelques jours442

répondre à tous(1)je répondrai

  • P粉362071992

    P粉3620719922024-03-29 07:32:06

    Le moyen le plus efficace est d'utiliser une requête avec ON DUPLICATE KEY UPDATE 子句的 INSERT.

    Si la clé primaire n'existe pas, cela insérera un nouvel enregistrement ; si la clé primaire existe déjà, seul le champ spécifié de l'enregistrement de clé primaire sera mis à jour (aucune erreur ne sera générée).

    Par exemple, si user_id 不存在,以下代码将创建一个新用户。如果user_id确实存在,它只会更新last_visited_date.

    INSERT INTO users
        (user_id, last_visited_date)
    VALUES
        ({user_id}, UTC_TIMESTAMP())
    ON DUPLICATE KEY UPDATE
        last_visited_date= VALUES(last_visited_date)

    Cette approche vous permet de créer de nouveaux enregistrements et de mettre à jour les enregistrements existants avec une seule requête, éliminant ainsi le besoin de vérifier les clés primaires existantes.

    Remarque : si la clé primaire est un index à incrémentation automatique, MySQL le fera ON DUPLICATE UPDATE 子句视为与 INSERT 查询相同,因此下一个 ID 将增加 < code>1 tant que la clé primaire existe déjà.

    Si vous ne souhaitez pas utiliser la clause ON DUPLICATE KEY UPDATE, détecter les erreurs sur les clés primaires existantes sera l'approche la plus performante.

    répondre
    0
  • Annulerrépondre