From 18657a960e125336f704ea058e25c27bd3900dcb Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 19:28:19 +0200 Subject: Adding upstream version 3.40.1. Signed-off-by: Daniel Baumann --- www/c3ref/last_insert_rowid.html | 186 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 www/c3ref/last_insert_rowid.html (limited to 'www/c3ref/last_insert_rowid.html') diff --git a/www/c3ref/last_insert_rowid.html b/www/c3ref/last_insert_rowid.html new file mode 100644 index 0000000..a939f11 --- /dev/null +++ b/www/c3ref/last_insert_rowid.html @@ -0,0 +1,186 @@ + + + + + +Last Insert Rowid + + + +
+ + + +
+
+Small. Fast. Reliable.
Choose any three. +
+ + +
+
+ + + +
+
+
+ + +
+

SQLite C Interface

+

Last Insert Rowid

+
+
+sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);
+
+

+Each entry in most SQLite tables (except for WITHOUT ROWID tables) +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_ as long as those +names are not also used by explicitly declared columns. If +the table has a column of type INTEGER PRIMARY KEY then that column +is another alias for the rowid.

+ +

The sqlite3_last_insert_rowid(D) interface usually returns the rowid of +the most recent successful INSERT into a rowid table or virtual table +on database connection D. Inserts into WITHOUT ROWID tables are not +recorded. If no successful INSERTs into rowid tables have ever occurred +on the database connection D, then sqlite3_last_insert_rowid(D) returns +zero.

+ +

As well as being set automatically as rows are inserted into database +tables, the value returned by this function may be set explicitly by +sqlite3_set_last_insert_rowid()

+ +

Some virtual table implementations may INSERT rows into rowid tables as +part of committing a transaction (e.g. to flush data accumulated in memory +to disk). In this case subsequent calls to this function return the rowid +associated with these internal INSERT operations, which leads to +unintuitive results. Virtual table implementations that do write to rowid +tables in this way can avoid this problem by restoring the original +rowid value using sqlite3_set_last_insert_rowid() before returning +control to the user.

+ +

If an INSERT occurs within a trigger then this routine will +return the rowid of the inserted row as long as the trigger is +running. Once the trigger program ends, the value returned +by this routine reverts to what it was before the trigger was 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.

+ +

For the purposes of this routine, an INSERT is considered to +be successful even if it is subsequently rolled back.

+ +

This function is accessible to SQL statements via the +last_insert_rowid() SQL function.

+ +

If a separate thread performs a new INSERT on the same +database connection while the sqlite3_last_insert_rowid() +function is running and thus changes the last insert rowid, +then the value returned by sqlite3_last_insert_rowid() is +unpredictable and might not equal either the old or the new +last insert rowid. +

See also lists of + Objects, + Constants, and + Functions.

+ -- cgit v1.2.3