Saya memiliki database SQLite. Saya mencoba memasukkan nilai ( users_id
, lessoninfo_id
) dalam tabel bookmarks
, hanya jika keduanya tidak ada sebelumnya berturut-turut.
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+")))
Ini memberikan kesalahan yang mengatakan:
kesalahan db dekat tempat sintaks.
sumber
person (id, name unique)
dancat (person_id, name unique)
dan saya ingin memasukkan banyak pasangan(person_name, cat_name)
?ON CONFLICT IGNORE
keCREATE TABLE
akan sedikit lebih praktisUntuk kolom unik, gunakan ini:
INSERT OR REPLACE INTO table () values();
Untuk informasi lebih lanjut, lihat: sqlite.org/lang_insert
sumber
Unique(col1,col2)
dan Anda juga memiliki col3, karena penyisipan atau pengabaian akan gagal di mana ini akan memperbarui col3 ke nilai baru.insert or replace into my_table values('1','2','5')
menggantikan baris'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;
Ini cara tercepat.
Untuk beberapa mesin SQL lainnya, Anda dapat menggunakan tabel Dummy yang berisi 1 record. misalnya:
select 1, 167 from ONE_RECORD_DUMMY_TABLE
sumber