Вопросы говорят обо всем на самом деле.
У меня есть таблица, и я хочу вставить строку, если она еще не существует. или мне просто сделать вставку, и если ограничение ключа нарушено, игнорировать его?
Использовать INSERT OR IGNORE: http://www.sqlite.org/lang_insert.html
Используйте триггер, который срабатывает перед вставкой и удаляет дублирующую строку, что-то вроде ...
CREATE TRIGGER trigger_name BEFORE INSERT on your_table FOR EACH ROW WHEN EXISTS (SELECT * FROM your_table WHERE id = NEW.id) BEGIN SELECT RAISE(IGNORE); END;