Announcement

Collapse
No announcement yet.

Auto Increment

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Auto Increment

    Hallo zusammen,

    kann mir bitte einer sagen, ob Firebird das SQL Statement Auto_Increment versteht?
    Denn ich bekomme es nicht zu laufen.
    Wenn Firebird es nicht versteht, gibt es dann eine einfache Variante mit der ich via SQL die Primärschlüssel automatisch durchnummerieren kann.

    P.S. Ich greife über Java auf die FireBird zu

  • #2
    autoinc, wie z.B. in mySQL gibt es in FB nicht. FB kennt aber Sequenzen, welche in FB Generatoren genannt werden.
    In Verbindung mit einem Trigger kann so eine automatische Vergabe von PK-Werten bewerkstelligt werden. Das ist viel flexibler.

    Comment


    • #3
      Danke für dein Posting.

      Kannst du mir bitte sagen, wie ich das dann mit Fd mache (-> Generatoren)?

      Comment


      • #4
        Hallo,

        ein Auto-Increment mit Generator und Trigger kann serverseitig wie in dem folgenden Beispiel gemacht werden:

        [highlight=sql]
        CREATE TABLE T1 (
        T1_ID BIGINT NOT NULL,
        CONSTRAINT PK_T1 PRIMARY KEY (T1_ID)
        );

        CREATE GENERATOR T1_GEN;

        SET TERM ^^ ;
        CREATE TRIGGER T1_ID FOR T1 ACTIVE BEFORE INSERT POSITION 0 AS
        BEGIN
        IF ((NEW.T1_ID IS NULL) OR (NEW.T1_ID = 0)) THEN
        NEW.T1_ID = GEN_ID(T1_GEN, 1);
        END
        ^^
        SET TERM ; ^^
        [/highlight]


        Schöne Grüße,
        Thomas
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          Kannst du mir bitte sagen, was " ^^ " zu bedeuten hat?

          Comment


          • #6
            Man könnte auch !! oder was anderes nehmen
            Dient nur dazu für die Create-Anweisung ein anderes Terminalsymbol zu setzten, daß das Terminalsymbol des Triggers ( nicht fälschlicherweise als Terminalsymbol der DDL-Anweisung angenommen wird. Am Ende wird dies wieder auf ; zurückgesetzt

            Comment

            Working...
            X