Eu tenho um banco de dados SQLite. Estou tentando inserir valores ( users_id
, lessoninfo_id
) na tabela bookmarks
, apenas se ambos não existirem antes em uma linha.
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+")))
Isso gera um erro dizendo:
erro db perto de onde sintaxe.
fonte
person (id, name unique)
ecat (person_id, name unique)
quero inserir muitos pares(person_name, cat_name)
?ON CONFLICT IGNORE
aCREATE TABLE
seria um prático pouco maisPara uma coluna exclusiva, use este:
Para mais informações, consulte: sqlite.org/lang_insert
fonte
Unique(col1,col2)
e você também tiver o col3, porque uma inserção ou ignorar falhará onde isso atualizará o col3 para o novo valor.insert or replace into my_table values('1','2','5')
substitui uma linha'1','2','3'
Esta é a maneira mais rápida.
Para alguns outros mecanismos SQL, você pode usar uma tabela Dummy contendo 1 registro. por exemplo:
fonte