Manuell vorwärts, Sequenz - oracle sql
Ich muss nach vorne eine Reihe von Sequenzen, die mit nur DML-Zugang. Durch einen Fehler in einem Stück code mehrere Werte waren, packte ohne eine Sequenz, sondern manuell, so dass nun die Sequenz duplizieren, diese Werte. Also, würde ich mag, um die push-Sequenz zu den max-Wert, so dass das nächste mal nextval aufgerufen wird, gibt einen Wert größer als das maximum. Ich habe über 50 Sequenzen mit jeweils ein paar tausend vorwärts.
Ist das möglich, nur mit DML-Zugriff? Wenn ja, wie sollte ich es angehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dynamisches SQL verwenden, um dies zu tun. Zum Beispiel, dieses bit des Codes wählen Sie den nächsten 10.000 die Werte aus jeweils einer Liste von Sequenzen.
Wenn Sie hatte die Fähigkeit zu Problem-DDL-gegen die Sequenz, Sie könnte verwenden einen ähnlichen Ansatz, um die
INCREMENT
zu 10.000, wählen Sie einen Wert aus der Sequenz, und legen Sie dieINCREMENT
zurück auf 1 (oder was auch immer es jetzt ist).Sollten Sie bestimmen, den Unterschied zwischen dem nächsten Wert der Sequenz und den erforderlichen Wert. Der erforderliche Wert ist in der Regel der max-Wert für die primary key-Spalte (nennen wir ihn ID).
können Sie nur
bis es groß genug ist...
Wenn Sie eine Tabelle mindestens so viele Zeilen, wie der Betrag, den Sie hinzufügen möchten, um Ihre Sequenzen, die folgenden arbeiten. Diese benennt jede Sequenz durch den gleichen Betrag, die nicht zu Ihnen passt, aber es ist schnell und einfach, ohne PL/SQL-oder die Notwendigkeit zu löschen/neu erstellen der Sequenz. Ich benutze es die ganze Zeit, wenn ich will-Entwicklung server-Sequenzen vor der Produktion.
Neu zu starten, die Reihenfolge bei einem anderen Wert müssen Sie löschen und neu erstellen.
Finden Sie in der Oracle-Dokumentation für
ALTER SEQUENCE
hier.Und für
CREATE SEQUENCE
hierSo, Nein, ich glaube nicht, dass es ist möglich, mit DML-Zugriff, es sei denn, Sie nur Inkrement wiederholt, wie Randy schon sagt.