Maison > base de données > tutoriel mysql > Comment puis-je obtenir la fonctionnalité de mise à jour de clé en double de MySQL dans SQLite ?

Comment puis-je obtenir la fonctionnalité de mise à jour de clé en double de MySQL dans SQLite ?

Susan Sarandon
Libérer: 2025-01-15 14:11:44
original
1055 Les gens l'ont consulté

How Can I Achieve MySQL's ON DUPLICATE KEY UPDATE Functionality in SQLite?

SQLite Upsert : mise en miroir de la fonctionnalité de mise à jour de clé en double de MySQL

Le ON DUPLICATE KEY UPDATE de MySQL simplifie l'insertion ou la mise à jour de lignes en fonction de contraintes de clé uniques. Cette requête unique insère une nouvelle ligne si la clé est unique ou met à jour une ligne existante si une clé en double est trouvée. SQLite n'a pas cet équivalent direct.

Solutions de contournement pour les upserts dans SQLite

SQLite propose des stratégies alternatives pour obtenir le même résultat :

1. SELECT puis INSERT ou UPDATE :

Cette méthode utilise deux requêtes :

  • Une SELECT requête pour vérifier l'existence d'une ligne avec la clé donnée.
  • Une requête INSERT ou UPDATE, selon le résultat de la requête SELECT.

Cette approche nécessite deux interactions de base de données, ce qui peut avoir un impact sur les performances.

2. MISE À JOUR, puis INSÉRER en cas d'échec :

Cela implique une seule UPDATE requête avec gestion des erreurs :

  • Un UPDATE réussi indique une ligne existante et les données sont mises à jour.
  • Un échec UPDATE (car la ligne n'existe pas) déclenche une requête INSERT.

Bien que cela réduise les appels à la base de données à un, cela nécessite une gestion supplémentaire des erreurs pour les INSERT tentatives échouées (par exemple, en raison de clés en double).

Stratégie d'insertion SQLite optimale

La méthode d'upsert SQLite la plus efficace et la plus robuste combine INSERT OR IGNORE et UPDATE :

INSERT OR IGNORE INTO visits VALUES ($ip, 0);
UPDATE visits SET hits = hits + 1 WHERE ip LIKE $ip;
Copier après la connexion

Cela nécessite une contrainte UNIQUE ou PRIMARY KEY sur la colonne "ip". Le INSERT OR IGNORE tente l'insertion ; si une clé en double existe, elle est ignorée en silence. Le UPDATE suivant incrémente ensuite le compteur d'accès pour la ligne existante. Cette solution offre à la fois efficacité (un seul aller-retour dans la base de données) et évite les erreurs dues aux insertions de clés en double.

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!

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