Лучший способ получить идентификатор последней вставленной строки в SQLite - PullRequest
25 голосов
/ 03 мая 2011

На iPhone, как лучше всего получить идентификатор последней вставленной строки в базе данных SQLite с помощью FMDB?

Есть ли лучший способ, чем делать:

SELECT MAX(ID)

Ответы [ 3 ]

61 голосов
/ 03 мая 2011

Если вы можете гарантировать, что ваш столбец ID является столбцом с автоинкрементом, MAX(ID) хорошо.

Но для любого случая есть специальная функция SQLite, которая называется LAST_INSERT_ROWID():

SELECT LAST_INSERT_ROWID();

В FMDB вы используете метод -lastInsertRowId (который внутренне выполняет вышеуказанное):

int lastId = [fmdb lastInsertRowId];
8 голосов
/ 03 мая 2011

Функция sqlite3_last_insert_rowid () - это то, что вы ищете. Только что проверив исходный код для FMDB, в FMDatabase , по-видимому, существует метод, называемый -lastInsertRowId, который обертывает функцию.

0 голосов
/ 01 августа 2015

Попробуйте следующее:

var rowid: Int = Int(contactDB.lastInsertRowId())
...