2009-04-15 11 views
8

ich etwas tun, wieSQLite, UPDATE OR REPLACE

UPDATE OR REPLACE sometable SET a = 1, b = 2, wobei c = 3

Ich erwarte, dass, wenn es tut es existieren in den DBs eingefügt werden. Aber nichts passiert und ich bekomme keine Fehler. Wie kann ich Daten einfügen, ersetzen Sie es, wenn es bereits ein, wo für den Zustand existieren und verwenden (anstelle BC einer eindeutigen ID ersetzen)

Antwort

16

Vorsicht, INSERT Versuchen OR REPLACE nicht über das erwartete Verhalten eines "UPDATE OR REPLACE".

Wenn Sie die Werte nicht für alle Fieds festlegen, ersetzt INSERT OR REPLACE sie durch Standardwerte, während Sie bei einem UPDATE erwarten, dass die alten Werte beibehalten werden.

Siehe meine Antwort hier für ein Beispiel: SQLite - UPSERT *not* INSERT or REPLACE

9

INSERT OR REPLACE INTO [someTable] (a,b) VALUES(1,2) WHERE c = '3' 
+3

Diese Syntax ist nicht gültig. Betrachten Sie https://www.sqlite.org/lang_insert.html für einfügen und https://www.sqlite.org/lang_select.html für auswählen. Keine Where-Klausel kann nach Werten (...) hinzugefügt werden. –