Einfach in IBExpert autoinc in der Columns view anklicken. Dort legt er für dich die Trigger an.
Ansonsten kann ich dir bei Firebird
2 nur empfehlen
nicht auf alles zu hören, ws die alten
FB-Hasen sagen.
Firebird 2 hat eine returning clause, das heißt du kannst dir direkt aus einem INSERT den neuen PrimaryKey holen, den ein Trigger besetzt hat.
Dadurch kannst du die Lücke schließen, die der Standard-Trigger aus IBExpert (also auch Hansas) offen lässt.
In diesem klassischen
IB/
FB-PK-Trigger wird nur dann der PK aus dem Generator geholt wenn kein Wert für den PK angegeben wurde.
IMHO ist das ziemlich fehleranfällig, da später eine Kollision entstehen kann.
Stell' dir vor, dein Generator steht auf 3. Bei einem INSERt wird jetzt aber eine 5 für den PK eingefügt.
Der blauäugige Trigger von oben wird den Wert in deine Tabelle lassen und alles
scheint Friede-Freude-Eierkuchen.
Jetzt werden noch 2 Datensätze angelegt, bei denen kein Wert für den PK angegeben wurde.
- Generatorwert 3 + 1 -> 4 als PK in die Tabelle -> ok
- Generatorwert 4 + 1 -> 5 in die Tabelle -> kaboom!
5 wurde vorhin schon eingefügt!
Oki, was machen?
Du lässt dir natürlich weiterhin den Trigger von IBExpert anlegen. (Man ist ja faul
)
IBExpert lässt dich aber direkt den Code editeren und du löschst die Zeile mit dem "if :new.blabla is null then" einfach raus.
Ein INSERT sieht jetzt so aus:
SQL-Code:
INSERT INTO DeineTabelle
(
SomeField
)
VALUES
(
:SomeField
)
RETURNING ID INTO :ID
Solange der Trigger läuft kannst du dir nun sicher sein immer einen korrekten PK einzufügen und du bekommst in auch direkt bei einem INSERT zuück.
Zitat von
BenjaminH:
Was bedeutet
und wofür sind die ganzen ^
Du legst am Anfang eines Skriptes fest was der Statement seperator ist.
Jedesmal wenn dieser String auftaucht wird das Schnipselchen davor als einzelnes Statement abgesetzt.