Написать запрос вставки в SQLite3 в iPhone - PullRequest
2 голосов
/ 26 июня 2009

Привет, нужно вставить данные в таблицу, если запись еще не завершена Пример: ЕСЛИ НЕ СУЩЕСТВУЕТ (ВЫБЕРИТЕ Id ИЗ таблицы, ГДЕ id = _Id) THEN
INSERT INTO tbale (.....)

Это легко сделать с помощью хранимой процедуры в MySql. Но я хочу сделать то же самое в SQLite, написав один оператор запроса.

Просьба помочь

Ответы [ 4 ]

3 голосов
/ 27 июня 2009

INSERT INTO CategoryMaster (CategoryID, CategoryText) ВЫБРАТЬ% d, '% @' ГДЕ НЕ СУЩЕСТВУЕТ (ВЫБРАТЬ 1 ИЗ CategoryMaster ГДЕ CategoryID =% d)

Это работает для меня:)

1 голос
/ 26 июня 2009

В SQlite нет хранимых процедур, которые вам нужны для такой логики. Но вы всегда можете расширить sqlite с помощью простых C-функций. Или вы можете просто написать эту логику на любом языке, на котором вы пишете свою программу. Ваше профилирование показало, что это критический путь, который нужно оптимизировать?

0 голосов
/ 26 июня 2009

Я бы сделал это, выполнив первый запрос, чтобы увидеть, существует ли запись, а затем решил бы, выполнять ли вставку или обновление. Я не думаю, что SQLite имеет полнофункциональный язык запросов для поддержки желаемого более короткого подхода.

0 голосов
/ 26 июня 2009

Поместите уникальный индекс в столбец id (или сделайте его первичным ключом), затем используйте:

REPLACE INTO table(.....)

см: http://www.sqlite.org/lang_insert.html или http://www.sqlite.org/lang_replace.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...