SQLite中的“插入如果不存在”语句

SQLite中的“插入如果不存在”语句

我有一个SQLite数据库。我试图插入值(users_idlessoninfo_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错误。


翻阅古今
浏览 1441回答 3
3回答

慕村225694

对于唯一的列,请使用以下内容:INSERT OR REPLACE INTO table () values();有关更多信息,请参见:org/lang_INSERT

哈士奇WWW

如果您不希望有重复项,则应该将其声明为表约束:CREATE TABLE bookmarks(     users_id INTEGER,     lessoninfo_id INTEGER,     UNIQUE(users_id, lessoninfo_id));(两列上的主键具有相同的效果。)然后,就可以告诉数据库您想要悄悄的忽略违反这种约束的记录。:INSERT OR IGNORE INTO bookmarks(users_id, lessoninfo_id) VALUES(123, 456)
打开App,查看更多内容
随时随地看视频慕课网APP