2016-05-09 14 views
1

Ich verwende Android/Java und SQLite3/SQLiteOpenHelper mit den Cursors und ContentValues.Nur einfügen, wenn Timestamp nicht belegt ist

Ich habe ein Timestamp-Feld in meiner Tabelle. Ich möchte sicherstellen, dass, wenn jemand eine neue Zeile hinzufügt, die Zeile nicht hinzugefügt wird, wenn der Zeitstempel bereits besetzt ist (also will ich nicht mehr als einen Wert pro Zeitstempel).

Kann dies effizient erzwungen werden? Oder muss ich jedes Mal, wenn ich eine Einfügung durchführe, eine select-Anweisung ausführen, um sie zuerst zu überprüfen?

Antwort

1

Fügen Sie einen UNIQUE Qualifier für das Zeitstempelfeld hinzu. Sie können dann das gewünschte Verhalten auswählen, indem Sie inserWithOnConflict() aufrufen und CONFLICT_FAIL als Konfliktalgorithmus übergeben.

+0

Bedeutet dies, dass Inserts, die die gleichen Zeitstempel haben, einfach ignoriert werden, oder werfen sie einen Fehler usw.? –

+0

Werfen Sie einen Blick auf die Javadocs, die ich verlinkt habe. Sie können das gewünschte Verhalten auswählen. 'CONFLICT_FAIL' verursacht eine Ausnahme, –

+0

Oh, tut mir leid, dass der Beitrag bearbeitet wurde. Ich sehe es jetzt. Vielen Dank! Kann in 5 annehmen. –

Verwandte Themen