Ich habe eine SQLite-Datenbank. Ich versuche, Werte ( users_id
, lessoninfo_id
) in die Tabelle einzufügen bookmarks
, nur wenn beide vorher nicht in einer Zeile existieren.
INSERT INTO bookmarks(users_id,lessoninfo_id)
VALUES(
(SELECT _id FROM Users WHERE User='"+$('#user_lesson').html()+"'),
(SELECT _id FROM lessoninfo
WHERE Lesson="+lesson_no+" AND cast(starttime AS int)="+Math.floor(result_set.rows.item(markerCount-1).starttime)+")
WHERE NOT EXISTS (
SELECT users_id,lessoninfo_id from bookmarks
WHERE users_id=(SELECT _id FROM Users
WHERE User='"+$('#user_lesson').html()+"') AND lessoninfo_id=(
SELECT _id FROM lessoninfo
WHERE Lesson="+lesson_no+")))
Dies gibt einen Fehler aus, der besagt:
DB-Fehler in der Nähe der Syntax.
quelle
person (id, name unique)
undcat (person_id, name unique)
möchte viele Paare einfügen(person_name, cat_name)
?ON CONFLICT IGNORE
zuCREATE TABLE
etwas praktischerVerwenden Sie für eine eindeutige Spalte Folgendes:
Weitere Informationen finden Sie unter: sqlite.org/lang_insert
quelle
Unique(col1,col2)
und Sie auch col3 haben, da ein Einfügen oder Ignorieren fehlschlagen würde, wenn dadurch col3 auf den neuen Wert aktualisiert wird.insert or replace into my_table values('1','2','5')
ersetzt eine Reihe'1','2','3'
Dies ist der schnellste Weg.
Für einige andere SQL-Engines können Sie eine Dummy-Tabelle verwenden, die 1 Datensatz enthält. z.B:
quelle