|
sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
Each entry in an SQLite table has a unique 64-bit signed integer key called the "rowid". The rowid is always available as an undeclared column named ROWID, OID, or _ROWID_. If the table has a column of type INTEGER PRIMARY KEY then that column is another an alias for the rowid.
This routine returns the rowid of the most recent successful INSERT into the database from the database connection given in the first argument. If no successful inserts have ever occurred on this database connection, zero is returned.
If an INSERT occurs within a trigger, then the rowid of the inserted row is returned by this routine as long as the trigger is running. But once the trigger terminates, the value returned by this routine reverts to the last value inserted before the trigger fired.
An INSERT that fails due to a constraint violation is not a successful insert and does not change the value returned by this routine. Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK, and INSERT OR ABORT make no changes to the return value of this routine when their insertion fails. When INSERT OR REPLACE encounters a constraint violation, it does not fail. The INSERT continues to completion after deleting rows that caused the constraint problem so INSERT OR REPLACE will always change the return value of this interface.
If another thread does a new insert on the same database connection while this routine is running and thus changes the last insert rowid, then the return value of this routine is undefined.
See also lists of Objects, Constants, and Functions.