Задать вопрос
@stayHARD

Как сделать INSERT OR UPDATE?

Здравствуйте.

Нужно сделать что-то по типу INSERT OR UPDATE.

Суть:
Есть записи вида:
name = строка(пример - John)
age = цифра(пример - 24)
type = строка, может быть одним из ["employee", "employer", "both"]

Так вот, необходимо делать запрос для добавления данных, предварительно проверяя есть ли подобные в базе и если есть обновлять.
Алгоритм:
Допустим в базе уже есть:
John, 24, employee

1й случай:
Мы пытаемся положить:
John, 24, employee

Результат - ничего не делать

2й случай:
Мы пытаемся положить:
John, 24, employer

Результат - обновить объект до John, 24, both

Вот собственно и все. Есть какие-то соображения?
  • Вопрос задан
  • 1484 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Joysi75
Выполнять с 2мя командами в СУБД.
1) перед вашей операцией выполнить select * from table where age=X and name=Y
2) Далее, если вернет пустой набор - делать insert
если есть записи(ь) (не знаю, по логике возможны несколько записей или нет по одному возрасту и имени) -делать разбор возвращенного type и далее выполнить или нет необходимый update.

Я не знаю возможностей sqlite - может в нем можно хранимую процедуру сделать, где всю логику реализовать внутри и вызывать ее с параметрами.
Ответ написан
Комментировать
soshnikov
@soshnikov
Для начала хорошо было бы обозначить базу данных и библиотеки, которые вы используете.
Если это тайна - тогда самый тупой и затратный способ: select-insert|update
Ответ написан
swanrnd
@swanrnd
Издатель HTML5 игр
Делаем UPDATE, если возвращает 0 затронутых строк, то делаем INSERT
Ответ написан
Комментировать
igruschkafox
@igruschkafox
Специалист по сопровождению БД MS SQL
в MS SQL
Merge

в My SQL
Insert into .... with duplicate key Update

попробуйте оба варианта :)
точно незнаю какой сработает в SQL Lite
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы