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

Oracle PL/SQL-Sequenz wird mit Objektkonstruktoren nicht wie erwartet erhöht

Oracle-Sequenzen sind nicht dazu gedacht, zusammenhängende (um eins inkrementierte) IDs in der Zieltabelle zu erzeugen. Das liegt daran, dass sie sehr schnell sind und Multi-Threading-Zugriff ermöglichen, was bedeutet, dass Sequenz-IDs unter der Haube in verschiedenen Transaktionen zwischengespeichert werden.

Möglicherweise können Sie das Problem beheben, indem Sie die Sequenz mit NOCACHE deklarieren , aber es gibt immer noch keine Garantie dafür, dass IDs nicht übersprungen werden, wenn eine Transaktion aus irgendeinem Grund rückgängig gemacht wird.

Wie immer erklärt Tom Kyte das ausführlich.