Запретить вставку, если записи уже существуют в iphone sqlite

Я хочу вставить запись в таблицу sqlite в iphone, если ее еще нет.

Я использую три поля с именами

  • id(integer primary key Auto increment)

  • name(text)

  • address(text)

Если имя существует в таблице, оно не должно вставлять ни одну строку.

Как я могу это сделать?


person Raj Shekhar    schedule 15.02.2013    source источник


Ответы (2)


Сделайте поле name UNIQUEKEY, а остальное будет обрабатывать сам sqlite.

Вот запрос на создание таблицы:

CREATE TABLE YourTableName (ID integer NOT NULL PRIMARY KEY AUTOINCREMENT DEFAULT 0, текст имени UNIQUE, текст адреса)

person rptwsthi    schedule 15.02.2013
comment
вы имеете в виду, что даже после создания имени UNIQUEKEY вы можете вставить лишнюю запись? - person rptwsthi; 15.02.2013
comment
@rptawasthi Еще 1 вещь, если запись не вставлена, она должна предупредить (имя уже существует). Я использую метод sqlite3_exec .... пожалуйста, предложите ... - person Raj Shekhar; 15.02.2013
comment
Если вы используете sqlite3_exec, напечатайте NSSAsert в другом, что вам поможет? Поскольку сообщение будет похоже на нарушение ограничения UNIQUE key. Получите помощь от этого. - person rptwsthi; 15.02.2013
comment
Конечно! хорошо провел ночь.. :) - person rptwsthi; 15.02.2013

Попробуйте это (источник):

INSERT OR IGNORE INTO TableName (Field) VALUES 'value'
person Howie    schedule 15.02.2013
comment
Я пробовал это, но не преуспел, так как вышеуказанный запрос не работает, когда идентификатор берется как первичный ключ, и оба автоматически увеличиваются. - person Raj Shekhar; 15.02.2013