Best way to get the ID of the last inserted row on SQLite Best way to get the ID of the last inserted row on SQLite ios ios

Best way to get the ID of the last inserted row on SQLite


If you can guarantee that your ID column is an auto-increment column, MAX(ID) is fine.

But to cover any case, there's a specialized SQLite function called LAST_INSERT_ROWID():

SELECT LAST_INSERT_ROWID();

In FMDB, you use the -lastInsertRowId method (which internally runs the above):

int lastId = [fmdb lastInsertRowId];


The function sqlite3_last_insert_rowid() is what you're looking for. Having just checked out the source code for FMDB, there seems to be a method on FMDatabase called -lastInsertRowId that wraps the function.


For swift 4 use this code

let lastRowId = sqlite3_last_insert_rowid(db)

for example

if sqlite3_exec(db, stringSql, nil, nil, nil) != SQLITE_OK {    let errmsg = String(cString: sqlite3_errmsg(db)!)    print("error Insert: \(errmsg)")}let lastRowId = sqlite3_last_insert_rowid(db);print(lastRowId) // its gives you last insert idif sqlite3_finalize(statement) != SQLITE_OK {    let errmsg = String(cString: sqlite3_errmsg(db)!)    print("error finalizing prepared statement: \(errmsg)")}statement = nil//*** close data baseif sqlite3_close(db) != SQLITE_OK {    print("error closing database")}db = nil