Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle:a sequência MySequence.currval ainda não está definida nesta sessão


mysequence.CURRVAL retorna o último valor obtido da sequência mysequence em seu sessão e, portanto, não é definido até que você tenha obtido um valor usando mysequence.NEXTVAL pelo menos uma vez na sessão. O objetivo de CURRVAL é permitir que você use o valor da sequência mais de uma vez em seu código, por exemplo
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);

insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);

Se CURRVAL acabou de retornar o último valor obtido da sequência por qualquer sessão, então seria inútil no código acima e, de fato, poderia levar à corrupção de dados!