Я хочу обновить столбец строки, если строка уже существует, но если она еще не существует, я хочу вставить новую строку.
Связанные вопросы
Этот тип вопросов популярен для SQL в целом.
- ОБНОВЛЕНИЕ, если существует еще INSERT в SQL Server 2008
- Решения для ВСТАВКИ ИЛИ ОБНОВЛЕНИЯ на SQL Server
- Вставить в таблицу MySQL или обновить, если существует
и SQLite в частности
- ВСТАВИТЬ, ЕСЛИ НЕ СУЩЕСТВУЕТ ДРУГОЕ ОБНОВЛЕНИЕ?
- SQLite - UPSERT * не * INSERT или REPLACE
- SQLite UPSERT / UPDATE OR INSERT
- SQL: как обновить или вставить, если не существует? < / а>
Ищем реализацию SQLite.swift
Я пытаюсь сэкономить время разработки, используя оболочку SQLite.swift для разработки под iOS. Я выбрал этот фреймворк, потому что он был рекомендован на сайте raywenderlich.com. Думаю, было бы полезно иметь пример синтаксиса для обновления или вставки.
Стратегия
В этом ответе Сэм Саффрон говорит:
Если вы обычно делаете обновления, я бы ..
- Начать транзакцию
- Сделайте обновление
- Проверить количество строк
- Если это 0, сделайте вставку
- Совершить
Если вы обычно делаете вставки, я бы
- Начать транзакцию
- Попробуйте вставить
- Проверить наличие ошибки нарушения первичного ключа
- если у нас возникла ошибка, сделайте обновление
- Совершить
Таким образом, вы избегаете выбора и получаете надежную транзакцию на Sqlite.
Для меня это имеет смысл, поэтому в своем ответе ниже я привожу пример обычно выполняемых обновлений.