Ich habe eine SQLite-Datenbank und ich bin das Einfügen neuer Datensätze mit dieser Abfrage:SQLite INSERT OR REPLACE mit Bedingung
INSERT OR REPLACE INTO tags (id, name, color, type, deleted, dirty) VALUES (?, ?, ?, ?, ?, 0)
Id
ist PRIMARY KEY
Wenn ich einen neuen Rekord (id
doesn bin Einfügen 't existiert in der Tabelle) INSERT
ausgeführt werden und alles ist in Ordnung. Wenn die id
bereits vorhanden ist, tritt die REPLACE
ein und der Datensatz wird ersetzt. Ich sollte eine Bedingung zur Abfrage REPLACE
hinzufügen: der Datensatz sollte ersetzt werden, wenn und nur wenn dirty in dem Datensatz, der bereits in der Tabelle vorhanden ist, auf 1 festgelegt wird. Wie kann ich eine solche Bedingung zur Abfrage hinzufügen?
Sie suchen nach UPSERT suchen, die leider nicht SQLite directlty unterstützt. Sie können separate Updates und Einfügungen durchführen. Hier finden Sie einige Problemumgehungen: https://stackoverflow.com/questions/418898/sqlite-upsert-not-insert-or-replace –
Warum versuchen Sie, dies mit einer einzigen Anweisung zu tun? –
Ich möchte Rennbedingungen vermeiden. Könnten Sie mir bitte eine Version mit mehreren Abfragen zeigen? –