2008-11-20 8 views
17

J'essaie d'effectuer un INSERT simple et de retourner l'identité (clé primaire auto-incrémentée). J'ai essayéSQLite prend-il en charge SCOPE_IDENTITY?

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

et je reçois l'erreur suivante

EnvironmentError: SQLite error 
no such function: SCOPE_IDENTITY

Est-ce que SQLite SCOPE_IDENTITY de soutien?
Si oui, comment l'utiliser?
Sinon, quelles sont mes alternatives (de préférence "thread-safe")?

Répondre

16

Consultez le FAQ. La fonction sqlite3_last_insert_rowid() le fera. Attention aux déclencheurs cependant.

+0

Est sqlite3_last_insert_rowid() threadsafe? Est-ce limité à la portée actuelle comme SCOPE_IDENTITY? – Greg

+1

Lire la documentation. Dernière identité sur la connexion actuelle. –

23

Si vous n'êtes pas en utilisant l'interface C pour la programmation et que vous voulez faire le processus à partir d'une commande SQL essayez: SELECT last_insert_rowid()

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

+0

De mon point de vue, cela devrait être la réponse acceptée. – JanR