Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle:Sequenz MySequence.currval ist in dieser Session noch nicht definiert

mysequence.CURRVAL gibt den letzten Wert zurück, der von der Sequenz mysequence in Ihrem erhalten wurde Sitzung und wird daher erst definiert, wenn Sie mindestens einmal in der Sitzung einen Wert mit mysequence.NEXTVAL erhalten haben. Der Zweck von CURRVAL besteht darin, dass Sie den Sequenzwert mehr als einmal in Ihrem Code verwenden können, z. B.

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

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

Wenn CURRVAL gerade den letzten Wert zurückgegeben hat, der von beliebig aus der Sequenz erhalten wurde Sitzung, dann wäre es im obigen Code nutzlos und könnte tatsächlich zu Datenbeschädigung führen!