Déterminer l'approche optimale pour éviter les entrées de base de données en double
L'insertion de données dans une base de données nécessite souvent des mesures pour éviter les entrées en double. Prenons un scénario dans lequel une table contient trois colonnes : id (clé primaire), pageId (clé étrangère) et nom. Un script PHP tente d'insérer 5 000 enregistrements dans la table, mais environ la moitié sont des doublons, partageant des valeurs identiques de pageId et de nom. Cet article vise à explorer des méthodes efficaces pour empêcher l'enregistrement de tels doublons lors de l'exécution du script.
La première étape recommandée consiste à établir une clé unique sur la table à l'aide de la commande suivante :
ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
Cette action garantit que chaque combinaison de pageId et de nom est unique dans le tableau. Cependant, il ne précise pas ce qui se passe lorsque des données en double sont rencontrées.
Il existe plusieurs options pour traiter les entrées en double :
Ignorer les doublons :
INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
Cette méthode ignore simplement les insertions en double et ne les stocke pas dans le table.
Écraser les enregistrements existants :
INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "first") ON DUPLICATE KEY UPDATE (somefield = 'first') INSERT INTO thetable (pageid, name, somefield) VALUES (1, "foo", "second") ON DUPLICATE KEY UPDATE (somefield = 'second')
Avec cette approche, le premier doublon écrase l'enregistrement d'origine et les doublons suivants écrasent le le plus récent.
Mettre à jour un Compteur :
INSERT INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo") ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
Cette méthode incrémente un champ de compteur pour chaque entrée en double. Cela peut être utile pour suivre le nombre de fois qu'un enregistrement particulier a été dupliqué.
En examinant attentivement ces options et le comportement souhaité, le développeur peut efficacement empêcher les entrées de base de données en double, garantissant ainsi la l'intégrité et la cohérence des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!