La tâche d'insertion ou de mise à jour les lignes d'une base de données basées sur deux conditions peuvent être difficiles, en particulier lorsque l'on recherche une solution efficace. Ce problème est particulièrement répandu lorsqu'il s'agit de tables dans lesquelles de nouvelles lignes sont continuellement générées avec des noms et des dates en double.
La solution optimale à ce problème est l'instruction INSERT INTO ON DUPLICATE KEY UPDATE. Cette instruction permet l'insertion d'une nouvelle ligne si elle n'existe pas déjà, et la mise à jour d'une ligne existante si elle existe. Pour utiliser cette instruction, la table doit avoir une clé unique (telle qu'une clé composite) pour détecter les conflits lors de l'opération d'insertion.
Considérons un tableau avec le schéma suivant :
CREATE TABLE myThing ( id INT AUTO_INCREMENT PRIMARY KEY, name INT NOT NULL, values1 INT NOT NULL, values2 INT NOT NULL, dates DATE NOT NULL, UNIQUE KEY (name, dates) -- This unique key is crucial. );
Avec ceci configuration, l'instruction suivante insérera une nouvelle ligne si la combinaison nom et date n'existe pas, ou mettra à jour la ligne existante si c'est le cas :
INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11') ON DUPLICATE KEY UPDATE values2=values2+1;
L'exécution de l'instruction insert plusieurs fois avec la même combinaison de nom et de date mettra à jour la colonne valeurs2, comme indiqué ci-dessous :
| id | name | values1 | values2 | dates | | --- | --- | --- | --- | --- | | 1 | 777 | 1 | 4 | 2015-07-11 |
L'instruction INSERT INTO ON DUPLICATE KEY UPDATE fournit une solution très efficace pour gérer les insertions et mises à jour basées sur plusieurs conditions. En définissant une clé unique, cette approche garantit que les entrées en double sont traitées de manière appropriée, éliminant ainsi le besoin de procédures stockées complexes.
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!