Primärschlüssel (autom. fortlaufende Nr.) für Firebird DB erzeugen



  • Hallo,

    Ich nutze IB Expert und Firebird 1.5 . Nachdem ich eine Tabelle und zwei Spalten erzeugt habe .... wie definiere ich meinen selbstinkrementierenden Schlüssel ??

    Irgendwie komme ich mit den Generatoren und Triggern nicht zurecht.

    Könntet ihr mir helfen ?

    Danke.



  • mit AUTO_INCREMENT wenn ich dein problem richtig verstanden habe...



  • Ja, Du hast das richtig erkannt.

    Folgendes habe ich gefunden:

    "Verwenden Sie den STEP_VALUE Parameter (kann positiv oder negativ sein), um den Generator zu inkrementieren:
    GEN_ID(<Generator_Name>, STEP_VALUE)"

    Da muss ich mit dem Editor arbeiten. Das will ich aber nicht. Wozu habe ich denn IB Expert !



  • Voll krass, wie die IBExpert-Doku oder Firebird-Tutorials das beschreiben.

    Ich hab es trotzdem rausbekommen:

    Einfach neuen Generator erzeugen und dessen Wert auf 0 setzen.

    Danach einen neuen Trigger erzeugen und im unterem Editorfeld den folgenden Ausdruck eingeben (lfd_nr soll automatisch befüllt werden):

    AS
    begin
    IF(NEW.lfd_nr is NULL)
    then NEW.lfd_nr = GEN_ID(new_generator,1);
    end

    Das klappt nun auch ganz gut. Nur wenn mehrere Datensätze in meiner zweiten Spalte den gleichen Inhalt haben, wird die nicht fortlaufend durchnummeriert.
    Beisp:
    lfd_nr Text
    18 g
    19 t
    20 s
    18 g
    22 x

    Wie bekomme ich das hin (Dubletten sind egal!)?



  • ich kenns von Interbase eigentlich nur so:

    CREATE GENERATOR new_generator;
    
    CREATE TRIGGER Tabellentrigger FOR Tabelle
    BEFORE INSERT POSITION 0
    AS BEGIN
        NEW.lfd_nr = GEN_ID(new_generator,1); 
    END;
    

    also ohne die if-Abfrage und nur für Insert


Anmelden zum Antworten