Take the 2-minute tour ×

I'm trying to perform a simple INSERT and return the identity (auto-incrementing primary key). I've tried

cmd.CommandText = "INSERT INTO Prototype ( ParentID ) VALUES ( NULL ); SELECT SCOPE_IDENTITY();";

and I receive the following error

EnvironmentError: SQLite error
no such function: SCOPE_IDENTITY

Does SQLite support SCOPE_IDENTITY?
If so, how do I use it?
If not, what are my (preferably "thread-safe") alternatives?

share|improve this question
add comment

2 Answers

up vote 12 down vote accepted

Check out the FAQ. The sqlite3_last_insert_rowid() function will do it. Careful of triggers though.

share|improve this answer
Is sqlite3_last_insert_rowid() threadsafe? Is it limited to the current scope like SCOPE_IDENTITY? –  Greg Nov 20 '08 at 7:56
Read the documentation. Last identity on the current connection. –  Robert Wagner Nov 20 '08 at 8:14
add comment

If you're not using the C interface for programming and want to do the process from an SQL Command try: SELECT last_insert_rowid()


share|improve this answer
add comment

Your Answer


