-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/27/2010 11:41 AM, Scott A Mintz wrote:
> I know that I can use sqlite3_last_insert_rowid() to retrieve the value. 
> However, in a multi-threaded environment, it's possible for another thread 
> to do an INSERT before I get the first result.  What's the best way to 
> retrieve the rowid? 

Use the last_insert_rowid() SQL level function and wrap in a transaction
(prevents other threads from making changes).  I do it like this (Python
code, adapt as needed):

rowid=cursor.execute("""
      BEGIN ;
        INSERT INTO table ... ;
        SELECT last_insert_rowid();
      END""").fetchall()[0][0]

Roger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk0ZSkcACgkQmOOfHg372QQ0dQCg0F6r7uz46OeT6HlfbEKVj7Mt
aNAAnRGhOcrgJrLOiN1VFsCZhE+YXiP+
=1Jlk
-----END PGP SIGNATURE-----
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to