MySQL:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]
Для SQLite вы должны использовать ON CONFLICT REPLACE
- см. http://www.sqlite.org/lang_conflict.html
ЗАМЕНА, Когда УНИКАЛЬНОЕ ограничение
нарушение происходит, ЗАМЕНИТЕ
алгоритм удаляет уже существующие строки
которые вызывают ограничение
нарушение до вставки или
обновление текущей строки и
Команда продолжает выполняться нормально.
Если нарушение ограничения NOT NULL
происходит, ЗАМЕНИТЕ конфликт
разрешение заменяет значение NULL
со значением по умолчанию для этого столбца,
или если столбец не имеет значения по умолчанию,
затем используется алгоритм ABORT. Если
ПРОВЕРЬТЕ нарушение ограничения,
ЗАМЕНИТЕ алгоритм разрешения конфликтов
всегда работает как ABORT.
Когда ЗАМЕНИТЕ разрешение конфликта
Стратегия удаляет строки, чтобы
выполнить ограничение, удалить триггеры
срабатывать, если и только если рекурсивные триггеры
включены.
Хук обновления не вызывается для
строки, которые удаляются с помощью REPLACE
стратегия разрешения конфликтов. И не делает
ЗАМЕНИТЕ приращение счетчика изменений.
Исключительное поведение, определенное в
этот пункт может измениться в
будущий выпуск.