tags:

views:

1071

answers:

2

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?

+5  A: 

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

Robert Wagner
Is sqlite3_last_insert_rowid() threadsafe? Is it limited to the current scope like SCOPE_IDENTITY?
Greg
Read the documentation. Last identity on the current connection.
Robert Wagner
+2  A: 

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()

http://www.sqlite.org/lang_corefunc.html

Michael