sql >> Databasteknik >  >> RDS >> Oracle

Oracle:sekvens MySequence.currval är ännu inte definierad i denna session

mysequence.CURRVAL returnerar det senaste värdet som erhölls från sekvensen mysequence i din session, och definieras därför inte förrän du har fått ett värde med mysequence.NEXTVAL minst en gång i sessionen. Syftet med CURRVAL är att låta dig använda sekvensvärdet mer än en gång i din kod, t.ex.

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

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

Om CURRVAL just returnerade det sista värdet som erhölls från sekvensen av någon session, då skulle den vara värdelös i ovanstående kod, och i själva verket kan leda till datakorruption!



  1. Kan INSERT [...] ON CONFLICT användas för kränkningar av främmande nyckel?

  2. Är mysql_real_escape_string() trasig?

  3. SQLiteReadOnlyDatabaseException:försök att skriva en skrivskyddad databas (kod 1032)

  4. Hur man installerar och säkrar MariaDB på Ubuntu