2013-08-09 6 views
5

Ich habe eine Datenbank, in der ich eine Tabelle mit dem Namen "SectionDetails" erstellt habe. In dieser Tabelle habe ich "ID" als Primärschlüssel mit AUTOINCREMENT Eigenschaft.Und ich füge meine Daten in diese Tabelle.Funktioniert SQLite "Einfügen oder Ersetzen" mit dem Primärschlüssel AUTOINCREMENT?

Allerdings kam ich zu dem Szenario, in dem ich überprüfen muss, ob Datensatz ich bereits vorhanden ist oder nicht (wenn Datensatz vorhanden ist, ersetzen Sie es mit denselben Werten oder überspringen Sie es, und wenn Datensatz nicht vorhanden ist, dann einfügen ein).

Aber wenn ich versuchte, Datensatz mit denselben Spaltenwerten einzufügen, erhöht es den Primärschlüssel und fügt dieselbe Zeile erneut ein, anstatt zu ersetzen.

Also, meine Frage ist- Sollen sqlite "einfügen oder ersetzen" mit AUTOINCREMENT Primärschlüssel funktioniert?

Ich verwende folgende Abfrage:

insert or replace into SectionDetails(Name,Month,Title,Url)values('Deepak',"August","None","www.dd619.com") 

hier Spalte „id“ ist, weil seine Primärschlüssel mit AUTOINCREMENT Eigenschaft nicht angezeigt.

Antwort

8

Kurze Antwort: Nein, es nicht.

Das "Einfügen oder Ersetzen" funktioniert nur, wenn Sie auch den Primärschlüssel angeben. Mit dem Autoinkrement in einem Setup, das Sie beschreiben, kann dies nicht funktionieren.

Der schnellste Weg, dies zu erreichen, ist die Erstellung einer benutzerdefinierten Einfüge-/Aktualisierungsmethode für Ihren Anwendungsfall.

15

Sie müssen den anderen Spalten einige eindeutige Einschränkungen hinzufügen, damit dies funktioniert, und selbst dann ändern sich Ihre IDs.

insert or replace ist wirklich eine insert mit on conflict replace Konfliktlösungsstrategie. Das heißt, wenn die Einfügung gegen eine Bedingung verstoßen würde, werden zuerst alle in Konflikt stehenden Zeilen gelöscht, und die Einfügung findet erst dann statt. Der Mechanismus autoincrement generiert dann einen neuen ID-Wert für Sie.

Für weitere Informationen: http://www.sqlite.org/lang_conflict.html

+0

wirklich nette Antwort – Ata

Verwandte Themen