У меня есть база данных SQLite. Я пытаюсь вставить значения ( users_id
, lessoninfo_id
) в таблицу bookmarks
, только если оба ранее не существовали в строке.
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+")))
Это дает сообщение об ошибке:
db ошибка рядом с синтаксисом.
источник
person (id, name unique)
иcat (person_id, name unique)
я хочу вставить много пар(person_name, cat_name)
?ON CONFLICT IGNORE
кCREATE TABLE
было бы немногоДля уникального столбца используйте это:
INSERT OR REPLACE INTO table () values();
Для получения дополнительной информации см .: sqlite.org/lang_insert
источник
Unique(col1,col2)
и у вас также есть col3, потому что вставка или игнорирование не сработает, когда это обновит col3 до нового значения.insert or replace into my_table values('1','2','5')
заменяет ряд'1','2','3'
insert into bookmarks (users_id, lessoninfo_id) select 1, 167 EXCEPT select user_id, lessoninfo_id from bookmarks where user_id=1 and lessoninfo_id=167;
Это самый быстрый способ.
Для некоторых других механизмов SQL вы можете использовать фиктивную таблицу, содержащую 1 запись. например:
select 1, 167 from ONE_RECORD_DUMMY_TABLE
источник