Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle :la séquence MySequence.currval n'est pas encore définie dans cette session

mysequence.CURRVAL renvoie la dernière valeur obtenue à partir de la séquence mysequence dans votre session, et n'est donc pas défini tant que vous n'avez pas obtenu une valeur à l'aide de mysequence.NEXTVAL au moins une fois dans la session. Le but de CURRVAL est de vous permettre d'utiliser la valeur de séquence plus d'une fois dans votre code, par exemple

insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);

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

Si CURRVAL vient de renvoyer la dernière valeur obtenue à partir de la séquence par any session, alors cela serait inutile dans le code ci-dessus, et pourrait en fait conduire à la corruption des données !