Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:la sequenza MySequence.currval non è ancora definita in questa sessione

mysequence.CURRVAL restituisce l'ultimo valore ottenuto dalla sequenza mysequence nel tuo session, e quindi non è definito finché non hai ottenuto un valore usando mysequence.NEXTVAL almeno una volta nella sessione. Lo scopo di CURRVAL è quello di consentirti di utilizzare il valore della sequenza più di una volta nel tuo codice, ad es.

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

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

Se CURRVAL ha appena restituito l'ultimo valore ottenuto dalla sequenza da qualsiasi sessione, allora sarebbe inutile nel codice sopra, e infatti potrebbe portare alla corruzione dei dati!