[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Feb 2006
    Beiträge
    25

    SQL Autoincrement zurückzetzen

    Hallo,

    ich habe eine Datei mit CREATE TABLE erstellt. Ein Feld wurde als ID definiert:
    FeldID INTEGER GENERATED ALWAYS AS IDENTITY
    (START WITH 1 , INCREMENT BY 1), ...

    Danach habe ich ein Paar Testsätze hinzugefügt. Jetzt sind die weg (gelöscht) aber FeldID zählt weiter.
    Wie kann ich das FeldId wieder auf 1 sätzen?

    Vielen Dank im Voraus.

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Sinn und Zweck der ID's ist es eben, eine eindeutige ID während des Lebenszyklusses der Tabelle zu liefern.
    Ein zurücksetzen ist konzeptionell nicht vorgesehen, da die Eindeutigkeit sonst nicht gewährleistet werden kann.

    Ein Zurücksetzen ist nur per "drop table" und erneutem "Create table" möglich.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Feb 2006
    Beiträge
    25
    Danke!

    Schade, aber was sonst?

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Hallo,

    natürlich kann man auch eine Identity Column auf einen beliebigen Anfangs-Wert zurücksetzen und zwar ohne dass man die Tabelle löschen oder neu erstellen muss!

    Die Identity column kann über ein ALTER TABLE-Statement auf einen beliebigen Wert gesetzt werden. In dem folgenden Beispiel wird der Start-Wert auf 10 zurückgesetzt.

    PHP-Code:
    ALTER TABLE MySchema/MyTable 
          ALTER COLUMN MyIdent restart with 10

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Ok, wieder was gelernt !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Feb 2006
    Beiträge
    25
    Vielen Dank Birgitta!
    Klasse!

    Das mit "restart" habe ich im "SQL Reference" nicht gefunden.

    Sollte ich aber, denn das steht in
    ALTER TABLE/identity-alteration

  7. #7
    Registriert seit
    Jul 2005
    Beiträge
    232
    Nette Funktion. Bisher hab ich sowas immer mit einem Trigger realisiert. (Update <Table> set MyIderntity = (Select max(MyIdentity)+1) ...from <Table>).....

    Das sollte wesentlich performanter sein.

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Das sollte wesentlich performanter sein.
    Es sollte vor allem dehalb performanter sein, weil:

    1. Bei einem Aufruf eines Triggers ein dynamischer Programm-Aufruf mit dem kompletten Overhead.
    2. Bei der Verwendung einer Identity Column oder eines Sequence-Object, erfolgt kein Datei-Zugriff, sondern eine bestimmte Anzahl an Werten wird in einem Datenbereich auf Vorrat gehalten und immer der nächste ausgegeben und wieder aufgefüllt.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •