我有一个SQLite数据库 . 我试图在表 bookmarks
中插入值( users_id
, lessoninfo_id
),但前提是它们之前不存在 .
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 error where where syntax .
4 回答
如果你有一个名为memos的表,它有两列
id
和text
,你应该可以这样做:如果记录已包含
text
等于'text to insert'且id
等于5的行,则将忽略插入操作 .我不知道这是否适用于您的特定查询,但它可能会提示您如何继续 .
我建议您改为设计表格,以便不允许重复,如下面@CLs answer中所述 .
如果您从不想要重复项,则应将其声明为表约束:
(两列上的主键都会产生相同的效果 . )
然后可以告诉数据库你想要silently ignore records that would violate such a constraint:
对于唯一列,请使用以下命令:
有关更多信息,请参阅:sqlite.org/lang_insert
这是最快的方法 .
对于其他一些SQL引擎,您可以使用包含1条记录的Dummy表 . 例如: