Je suis un peu confus sur la façon de gérer la situation où vous mettez à jour une ligne dans sqlite si elle existe, ou insérez-le si ce n'est pas le cas. Il me semble voir une solution différente à chaque réponse à ce problème. Quel est le moyen le plus efficace ou le plus facile? EDIT: Je voulais dire sqlite, désoléInsérer ou mettre à jour la confusion
3
A
Répondre
0
SI EXISTS peut être utile ici, en vous mettant à jour si la condition renvoie true ou en insérant si false.
3
Pour SQLite:
CREATE TABLE foo (bar INTEGER UNIQUE, baz INTEGER)
INSERT INTO foo (bar,baz) VALUES (1, 2)
Cela devrait provoquer une IntegrityError: barre de colonne est pas unique:
INSERT INTO foo (bar,baz) VALUES (1,3)
Mais avec SQLite vous pouvez upsert en faisant INSERT OR REPLACE:
INSERT OR REPLACE INTO foo (bar,baz) VALUES (1,3)
Au lieu d'insérer ting une nouvelle ligne, depuis une ligne avec bar montent à 1 existe déjà, la valeur de baz est mis à jour 3.
Pour MySQL:
créer un index unique sur la table. Ensuite, utilisez
INSERT INTO table (...) values (...) ON DUPLICATE KEY UPDATE field = ...
par exemple:
CREATE UNIQUE INDEX mytable_index ON mytable (field1,field2)
INSERT INTO mytable (field1,field2,field3) values (val1,val2,val3)
ON DUPLICATE KEY UPDATE field3 = val3
Cela exige que (champ1, champ2) paires matable unique. Ensuite, lorsque vous insérez, soit vous obtiendrez une nouvelle ligne, soit, si (val1, val2) existe déjà dans mytable
, la valeur de field3 sera mise à jour.
Questions connexes
- 1. Insérer ou mettre à jour sans boucle?
- 2. Comment savoir qu'une entité va insérer ou mettre à jour
- 3. Insérer ou mettre à jour dans Castle ActiveRecord
- 4. Sql Server 2005 - Insérer un déclencheur de mise à jour - Mettre à jour, insérer la ligne
- 5. Aide avec NHibernate Insérer/Mettre à jour
- 6. Mettre à jour le déclencheur insérer Null
- 7. Une fonction php pour insérer ou mettre à jour la table mysql sur true/false
- 8. wpf - afficher, mettre à jour, insérer des modes
- 9. Insérer et mettre à jour en même temps
- 10. Insérer ou mettre à jour une table à l'aide de JDBC
- 11. Insérer/mettre à jour l'objet Doctrine depuis Excel
- 12. Comment appeler ou mettre à jour à partir d'une fonction?
- 13. Comment insérer/supprimer/mettre à jour dans un arbre ordonné
- 14. Insérer des lignes dans uitableview et mettre à jour immédiatement
- 15. NHibernate: Insérer et mettre à jour les dates
- 16. enregistrer ou mettre à jour le problème
- 17. LINQ to Sql: Insérer au lieu de mettre à jour
- 18. mettre à jour la table de destination
- 19. sqlite, METTRE A JOUR OU REMPLACER
- 20. MySQL Comment insérer un nouvel enregistrement ou mettre à jour un champ selon qu'il existe?
- 21. Comment insérer ou mettre à jour de nombreuses tables dans un framework d'infrastructure .net
- 22. Comment puis-je détecter si ApplyUpdates va insérer ou mettre à jour des données?
- 23. PHP/MySQL comment insérer et/ou mettre à jour deux tables MySQL?
- 24. Mettre à jour la collection observable en la réactualisant ou en l'ajoutant à la collection?
- 25. Comment mettre à jour s'il existe, insérer si non (AKA "upsert" ou "fusionner") dans MySQL?
- 26. ANSI SQL question - comment insérer ou mettre à jour un dossier si elle existe déjà?
- 27. créer trois procédures stockées (sélectionner/mettre à jour/insérer) par table ou selon les besoins?
- 28. Mettre à jour la requête? Ou autre solution?
- 29. postgres ERREUR: insérer ou mettre à jour sur la table "xxxxx" viole la clé étrangère contraindre "xxxxx"
- 30. Comment insérer une ligne, mais en double; le mettre à jour à la place?
Rats, je voulais dire SQLite – Vortol
J'aime le mot "UPSERT", ils devraient en faire une commande SQL standard. UPSERT INTO foo ... – CashCow