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
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
.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 将增加 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.