Firebird 2.0以降では、INSERT文にRETURNING句を加えることで、追加されたIDを取得できます。
INSERT INTO t1 (id, ...) VALUES (next value for gen_t1, ...) RETURNING id;
DelphiのTIBSQLでIDを取得するには次のようなコードになります。
IBSQL1.SQL.Text := 'INSERT INTO t1 (id, ...) VALUES (next value for gen_t1, ...) RETURNING id';
IBSQL1.ExecQuery;
ID := IBSQL1.FieldByName('id').AsInteger;
IBSQL1.Close;
DelphiでFireDacを使用する場合は次のようなコードになります。
FDQuery1.SQL.Text := 'INSERT INTO t1 (id, ...) VALUES (next value for gen_t1, ...) RETURNING id1';
FDQuery1.Open;
ID := FDQuery1.Fields[0].Value;