Зачем вам нужно значение перед вставкой?Можете ли вы получить информацию как часть вставки, используя предложение RETURNING
, то есть
INSERT INTO table_name( id, file_name )
VALUES( some_sequence.nextval, <<bind variable>> )
RETURNING id INTO <<bind variable>>
, или получить доступ к ней после вставки, используя
SELECT sequence_name.currval
FROM dual
currval
последовательностивозвращает самое последнее значение последовательности, созданной в текущем сеансе, так что это фактически потокобезопасно.Поскольку последовательности предназначены для предоставления чисел в среде с высокой степенью параллелизма, вы вообще не можете узнать, что будет nextval
, если вы на самом деле не получите nextval
.Даже если бы вы могли, нет никакой гарантии, что другой поток не придет и не получит значение, на которое вы посмотрели до того, как ваш INSERT
имел место, поэтому было бы небезопасно заглянуть на nextval
в многопользовательском режиме.окружающая среда.