2010-07-03 19 views
0

J'ai essayé INSERT OR REPLACE INTO, mais il ne conserve pas l'identifiant de ligne lorsqu'il remplace l'enregistrement pour le mettre à jour. Une autre option est de le faire en deux étapes: INSERT OR IGNORE INTO puis UPDATE, mais je préférerais une solution en une seule étape. Donc, je me demande si SQLite a quelque chose comme le mot-clé MERGE ou d'autres solutions simples?SQLite: mettre à jour un enregistrement s'il existe, sinon l'insérer?

Répondre

1

Non, SQLite ne prend pas en charge MERGE ou upsert.

Vous pouvez utiliser votre solution en deux étapes, mais ce que vous voulez probablement, c'est que la ROWID soit une colonne de première classe dans votre tableau. Si vous déclarez une colonne comme INTEGER PRIMARY KEY, ce sera un alias pour le ROWID. Alors INSERT OR REPLACE fonctionnera bien.

Questions connexes