我有一个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+")))
这会给出一个错误消息:
where语法附近的
db错误。
发布于 2013-10-13 01:38:07
如果您有一个名为memos的表,其中有两列id
和text
,您应该能够这样做:
INSERT INTO memos(id,text)
SELECT 5, 'text to insert'
WHERE NOT EXISTS(SELECT 1 FROM memos WHERE id = 5 AND text = 'text to insert');
如果记录中已经包含text
等于“text to insert”且id
等于5的行,则插入操作将被忽略。
我不知道这是否适用于您的特定查询,但它可能会给您一个提示,告诉您如何继续。
我建议您将表设计为不允许重复,如下面的@CLs answer
所述。
发布于 2013-10-13 16:10:18
如果您永远不想有重复项,则应将其声明为表约束:
CREATE TABLE bookmarks(
users_id INTEGER,
lessoninfo_id INTEGER,
UNIQUE(users_id, lessoninfo_id)
);
(两列上的主键将具有相同的效果。)
然后就可以告诉数据库您想要silently ignore records that would violate such a constraint
INSERT OR IGNORE INTO bookmarks(users_id, lessoninfo_id) VALUES(123, 456)
发布于 2017-12-20 18:10:31
https://stackoverflow.com/questions/19337029
复制相似问题