Effectuer une insertion dans la base de données pour détecter les erreurs de clé en double
P粉920835423
P粉920835423 2024-03-28 08:58:51
0
1
366

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粉920835423
P粉920835423

répondre à tous(1)
P粉362071992

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!