Maison >base de données >tutoriel mysql >Comment émuler efficacement la MISE À JOUR DE LA CLÉ EN DUPLICATION de MySQL dans SQLite ?
Simulation de la MISE À JOUR DE LA CLÉ EN DOUBLE de MySQL dans SQLite
SQLite ne dispose pas d'un équivalent direct de la clause ON DUPLICATE KEY UPDATE de MySQL, qui permet des mises à jour et des insertions efficaces d'enregistrements avec des contraintes uniques prédéfinies. Cependant, un effet similaire peut être obtenu grâce à des méthodes alternatives.
Méthodes alternatives
Afin de simuler un upsert dans SQLite, vous pouvez utiliser deux méthodes principales :
SÉLECTIONNER (INSÉRER ou MISE À JOUR) :
MISE À JOUR (INSÉRER si la MISE À JOUR échoue) :
Méthode recommandée
Les deux méthodes ont leurs avantages et leurs inconvénients, mais la deuxième méthode (en utilisant UPDATE (ou INSERT si UPDATE échoue)) est généralement plus efficace. Il ne nécessite qu'une seule opération de base de données et évite les requêtes SELECT inutiles.
Extraits de code suggérés
Voici un extrait de code suggéré pour implémenter la deuxième approche en utilisant une contrainte unique sur la colonne « ip » :
<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0); UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;</code>
Alternativement, l'extrait de code suivant provenant d'une autre solution Stack Overflow fournit une autre implémentation d'upsert fonctionnelle :
<code class="language-sql">INSERT INTO visits (ip, hits) VALUES ($ip, COALESCE((SELECT hits FROM visits WHERE ip LIKE $ip), 0) + 1);</code>
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!