Лучше всего было бы кодировать эту вставку как PL / SQL API на стороне базы данных, которая вернет вам идентификатор для использования.
например.)
create function insert_yourtable(p_f1 number, p_f2 varchar2, ... p_fn varchar2)
return number
idval number;
begin
insert into yourtable(f1, f2,...fn)
values (p_f1, p_f2, ...p_fn)
returning your_id_value into idval;
return idval;
end;
/
Тогда вы могли бы назвать это подготовленным оператором, чтобы получить выходной параметр и использовать идентификатор для остальной части вашей транзакции.
Ой - только что увидела комментарий "No OUT params ...."
Хорошо, тогда, я думаю, вам нужно управлять всем этим из пользовательского интерфейса.
Сбрось триггер со стола, сделай
select yourseq.nextval from dual;
чтобы получить следующее доступное значение ключа, сохранить его локально, а затем выполнить всю работу самостоятельно, используя полученный идентификатор для вставки в поле идентификатора в таблице. Последовательность обеспечит безопасность транзакций для идентификатора.
Какая боль в прикладной реализации ODBC!