Как получить ключ родительского объекта на iPhone с помощью Sqlite - PullRequest
0 голосов
/ 17 июня 2009

Очень простой пример, который я пытаюсь создать, разбираясь в программировании приложения для iPhone.

Первый TableView показывает производителей, выбор одного переводит пользователя в другое представление (Могу ли я использовать один и тот же вид для показа моделей) для показа моделей. Если в моделях TableView, отображающих модели автомобилей, пользователь может добавить новую запись, как и где мне получить первичный ключ (pk) родительского ключа (make)?

Каким способом я получу первичный ключ и как?

База данных Sqlite:

CREATE TABLE make(pk INTEGER PRIMARY KEY, parentkey INTEGER DEFAULT 0, title TEXT);

INSERT INTO make(title) VALUES('Honda');
INSERT INTO make(title) VALUES('Toyota');
INSERT INTO make(title) VALUES('Mazda');
INSERT INTO make(title) VALUES('Nissan');

INSERT INTO make(title, parentkey) VALUES('Civic', 1);
INSERT INTO make(title, parentkey) VALUES('Accord', 1);
INSERT INTO make(title, parentkey) VALUES('Corolla', 2);
INSERT INTO make(title, parentkey) VALUES('Corona', 2);

1 Ответ

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

С помощью SQL вы можете запрашивать таблицу SQLITE_SEQUENCE после каждой вставки:

SELECT seq FROM SQLITE_SEQUENCE WHERE name = 'make'

Это будет работать надежно только в том случае, если вы выполняете вставку и выбираете в той же транзакции, блокируя таблицу, чтобы никто другой не мог выполнить вставку, прежде чем вы получите значение из таблицы последовательности.


Использование API (а не SQL):

sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);

(из http://www.sqlite.org/c3ref/last_insert_rowid.html)

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