How to get the last insert ID?
If you have autoincrement columns populated with generator via triggers, you might want to know the value generator created. Reading the generator value is done like this:
select gen_id(GENERATOR_NAME, 0)
from rdb$database;
However, it is not certain that the value you'd get is the one you used as other users might have inserted new rows. The only wat to be sure, it to retrieve the 'next available number in sequence' yourself and use it in INSERT statement:
declare variable id bigint;
select gen_id(GENERATOR_NAME, 1)
from rdb$database
into :id;
INSERT INTO t1 (pk, ...) values (:id, ...);
This can easily be done inside a stored procedure or using two seaparate queries.
Firebird 2 introduces RETURNING clause for INSERT statements, so you can get the inserted value in a single go, just like with MySQL and some other database systems:
INSERT INTO t1 (...) values (...) returning pk;
PK
===========
32