Zurücksetzen von IDENTITY-Spalte in oracle, um einen neuen Wert
Ich bin mit IDENTITY
feature von oracle 12 c-Inkrement, Datensatz-id in der Tabelle.
Als Teil der Ersteinrichtung wir haben zu migrieren, werden einige Datensätze von einem anderen system aus, um diese Tabelle. diese Aufzeichnungen sind nicht sequentiell Datensätze(Teil-Datensätze werden gelöscht).
Wie man Identität immer höchste value + 1
auf der Grundlage der Tabelle von Datensätzen.
Nach googeln für verschiedene Optionen Schlüsselwort RESTART WITH
- value-option. Für diese benötigen wir zum erstellen einer neuen Prozedur speichern und ändern Sie alle Tabellen, die mit den höchsten möglichen Werten neu zu starten mit.
Gibt es einen direkten Schlüsselwort, das verwendet werden kann, zusammen mit IDENTITY
können erzwingen, dass es immer regenerieren höhere Werte. ?
- STARTEN MIT Funktion wird nicht arbeiten, auch wenn dies empfohlen wird als option in oracle-Dokumente. Einzige Möglichkeit scheint zu alter table und die Kraft der IDENTITÄT, von der höchsten Wert+1 .
- "starten Sie mit" nicht-oracle -, vielleicht mysql?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser hat sich super einfach in 12c
Dann den nächsten einfügen wird sicher legen Sie unter Verwendung einer Sequenz wurde automatisch zurückgesetzt, um was ist im wesentlichen max(id)+1
https://docs.oracle.com/database/121/SQLRF/statements_3001.htm#SQLRF01001
Keine direkte Stichwort und Sie haben zu alter table (richtige Wörter sind, BEGINNEN Sie MIT).
Es gibt eine weitere Möglichkeit, eine highwatermark für die identity-Spalte.
Für Allgemeine Abläufe (durch die Art und Weise Identität baut auf einem system Sequenz) verwenden Sie ein Alter trick mit der SCHRITTWEITE VON einer Verlagerung der mark in alle Richtungen.
Ist, wenn jetzt nächste Wert ist 100, und Sie müssen es 1000, tun Sie dies trick zwei mal: "Inkrementieren um 900", Datensatz hinzufügen und wieder "erhöhen um 1" (falls die Identität mit Schritt 1).