2008-11-20 16 views
17

Estoy tratando de realizar un simple INSERT y devolver la identidad (auto-incremento de la clave principal). He intentado¿Soporta SQLite SCOPE_IDENTITY?

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

y recibo el siguiente error

EnvironmentError: SQLite error 
no such function: SCOPE_IDENTITY

¿El SQLite SCOPE_IDENTITY apoyo?
Si es así, ¿cómo lo uso?
Si no, ¿cuáles son mis alternativas (preferiblemente "hilo-seguro")?

Respuesta

16

Echa un vistazo a FAQ. La función sqlite3_last_insert_rowid() lo hará. Sin embargo, cuidado con los factores desencadenantes.

+0

Se sqlite3_last_insert_rowid multi-hilo()? ¿Está limitado al alcance actual como SCOPE_IDENTITY? – Greg

+1

Lea la documentación. Última identidad en la conexión actual. –

23

Si usted no está utilizando la interfaz de C para la programación y querer hacer el proceso de tratar un comando SQL: SELECT last_insert_rowid()

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

+0

Desde mi punto de vista, esta debería ser la respuesta aceptada. – JanR