J'ai une base de données SQLite. J'essaye d'insérer des valeurs ( users_id
, lessoninfo_id
) dans la table bookmarks
, seulement si les deux n'existent pas avant dans une rangée.
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+")))
Cela donne une erreur disant:
erreur db près de la syntaxe.
la source
person (id, name unique)
etcat (person_id, name unique)
et je veux insérer beaucoup de paires(person_name, cat_name)
?ON CONFLICT IGNORE
àCREATE TABLE
serait un peu plus à portée de mainPour une colonne unique, utilisez ceci:
Pour plus d'informations, voir: sqlite.org/lang_insert
la source
Unique(col1,col2)
et que vous avez également col3, car une insertion ou un ignorer échouerait lorsque cela mettra à jour col3 à la nouvelle valeur.insert or replace into my_table values('1','2','5')
remplace une ligne'1','2','3'
C'est le moyen le plus rapide.
Pour certains autres moteurs SQL, vous pouvez utiliser une table factice contenant 1 enregistrement. par exemple:
la source