On Mon, Apr 9, 2012 at 3:25 AM, Simon Slavin <slav...@bigfraud.org> wrote:

> The C function sqlite3_last_insert_id(), and the SQLite wrapper around it
> last_insert_rowid() are as good as it gets.  You do have to be a little
> careful if you have a TRIGGER on an INSERT which does another INSERT.  If
> you use TRIGGERs I suggest you test out the behaviour for yourself to
> figure out what it does.
>

Thanks for that, Simon. A bit of background might help understand why i
ask: i have a db access abstraction API in C, and of course have an sqlite3
driver/wrapper. The last-insert-id op in the API supports (but does not
require) that a table/sequence name argument be passed to it (my research
into several C db APIs showed that some drivers want/need this). Currently
the sqlite3 wrapper ignores that argument. i just (experimentally)
implemented a lookup on sqlite_sequence if the hint is provided, else
falling back to sqlite3_last_insert_id(). It "works for me", but if it's a
potential portability problem then i'll remove it.

@Pavel: the id/trigger "problem" is not something i've seen personally - it
was reported by someone on this list some time last year, and i've just
always had it in the back of my mind (in the context of my db wrapper API).
i appreciate the link to the docs - that certainly clarifies it for me (as
a non-problem).

-- 
----- stephan beal
http://wanderinghorse.net/home/stephan/
http://gplus.to/sgbeal
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to