Perfeito Fábio, testei aqui com 2 sessões diferentes abertas e realmente
funcionou!

O Vitor Jr. também me passou a mesma solução pelo skype...

Obrigado aos dois!


Olha só que coisa... 15 anos de SQL e PL/SQL e eu não sabia desse conceito
básico até hoje!
Nunca tinha precisado.
Pra mim o currval pegava o último numero gerado pela sequence, independente
de sessão.

Pra gente ver que SEMPRE há o que aprender!


Em 22 de abril de 2014 11:23, Milton Bastos Henriquis Jr. <
miltonbas...@gmail.com> escreveu:

> Fala Fábião!
>
> Cara, eu juro que não sabia que o currval só pegava da sessão atual!
>
> Achei que o currval pegava o valor atual da sequence independente da
> sessão!
>
> Vou testar aqui...
>
>
> Em 22 de abril de 2014 11:21, Fabio Prado <fbifa...@gmail.com> escreveu:
>
>
>>
>> Miltão, por favor especifique como será essa transação concorrente. Se
>> ela for executada por outro usuário vc não terá problema algum, pois o
>> CURRVAL da SEQUENCE é um valor de sessão.
>>
>> É importante entender que as transações de outros usuários não afetarão o
>> CURRVAL de uma sessão que acabou de fazer o INSERT na TABLE1, se vc
>> utilizar o CURRVAL logo em seguida para fazer INSERT em outra tabela, ok?
>>
>>
>> []s
>>
>> *Fábio Prado*
>> <http://www.fabioprado.net/2014/01/oracle-ace-o-que-e-isso.html>
>> www.fabioprado.net
>> "Compartilhando conhecimentos e treinando profissionais em Bancos de
>> Dados Oracle"
>>
>>
>>
>> Em 22 de abril de 2014 11:10, Milton Bastos Henriquis Jr. <
>> miltonbas...@gmail.com> escreveu:
>>
>>
>>>
>>> Bom dia amigos!
>>>
>>> Tenho um probleminha aqui... quero ver se alguém consegue me ajudar.
>>>
>>> A situação é a seguinte:
>>>
>>>  - Tenho uma tabela TABLE1.
>>> Essa tabela (assim como todas as outras do sistema) tem uma trigger de
>>> insert.
>>>
>>> A PK dessa tabela é gerada por uma sequence.
>>> Isso é feito dentro da trigger - até aí tudo bem, algo bem comum de se
>>> ver por aí.
>>>
>>>
>>> O meu problema é que eu tenho um processo em que eu preciso fazer um
>>> insert na tabela TABLE1 (isso numa stored procedure), e preciso do ID
>>> que foi gerado
>>> para ser inserido em outra tabela.
>>>
>>> Eu não quero pegar o CURRVAL da sequence, pois corro o risco de uma
>>> transação
>>> concorrente também fazer um nextval nessa sequence nesse meio tempo.
>>>
>>> Alguém sabe se é possível eu conseguir retornar esse valor que está
>>> sendo gerado dentro da trigger?
>>>
>>>
>>>
>>  
>>
>
>

Responder a