Maison > base de données > tutoriel mysql > Comment simuler l'INSERT ON DUPLICATE KEY UPDATE de MySQL dans SQLite ?

Comment simuler l'INSERT ON DUPLICATE KEY UPDATE de MySQL dans SQLite ?

Linda Hamilton
Libérer: 2025-01-15 14:01:44
original
257 Les gens l'ont consulté

How to Simulate MySQL's INSERT ON DUPLICATE KEY UPDATE in SQLite?

Simulation de l'insert MySQL lors de la mise à jour d'une clé en double dans SQLite : guide complet

Les bases de données relationnelles doivent souvent mettre à jour un enregistrement lorsqu'il existe déjà, ou insérer un nouvel enregistrement lorsqu'il n'existe pas. Dans MySQL, cette fonctionnalité peut être obtenue en utilisant la syntaxe INSERT ... ON DUPLICATE KEY UPDATE, qui fournit un moyen pratique de combiner les opérations d'insertion et de mise à jour.

Cependant, SQLite ne supporte pas nativement cette syntaxe. Par conséquent, d’autres moyens d’obtenir le même effet dans SQLite doivent être explorés.

Une solution consiste à utiliser un SELECT combiné avec une requête INSERT ou UPDATE. Cela implique d'abord d'exécuter une requête SELECT pour vérifier si un enregistrement avec la même clé unique (par exemple, une adresse IP) existe. S'il existe, effectuez une requête UPDATE pour incrémenter la colonne des hits. S'il n'existe pas, une requête INSERT est exécutée pour créer un nouvel enregistrement.

Vous pouvez également combiner les requêtes UPDATE et INSERT. Ici, une requête UPDATE est d'abord exécutée, essayant d'incrémenter la colonne des hits pour une adresse IP spécifique. En cas de réussite, l'enregistrement existe et l'opération est terminée. Si la mise à jour échoue (car l'enregistrement n'existe pas), une requête INSERT est exécutée pour créer un nouvel enregistrement.

Les deux méthodes nécessitent une contrainte unique (ou clé primaire) sur la colonne concernée (par exemple ip).

Une autre solution efficace consiste à utiliser la déclaration suivante :

<code class="language-sql">INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip = $ip;</code>
Copier après la connexion

Cette méthode implique d'utiliser l'instruction INSERT OR IGNORE pour tenter d'insérer un nouvel enregistrement. La clause IGNORE empêche qu'une erreur soit générée si l'enregistrement existe déjà. L'instruction UPDATE suivante tente d'incrémenter la colonne des hits pour une adresse IP spécifique. Si UPDATE réussit, cela signifie que l'enregistrement a été mis à jour avec succès. S'il échoue, cela signifie que l'enregistrement n'existe pas et que l'instruction INSERT l'a créé. Notez que LIKE a été remplacé par = pour garantir une correspondance exacte de l'adresse IP.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal