Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   firebird Trigger (https://www.delphipraxis.net/125348-firebird-trigger.html)

khh 4. Dez 2008 14:20

Datenbank: firebird • Version: 2.1 • Zugriff über: zeos

firebird Trigger
 
hallo zusammen,

ich weiss zwar nicht ob ich hier offtoppic bin, abert ich denke das gehört zu den DB.
Nachdem ich nun mein RDBMS zu firebird gewechselt habe,
vermisse ich die autoincrement Felder.
Bei meiner Suche bin ich auf den Tipp gestossen einen Trigger zu verwenden.
Leider kenne ich mich damit gar nicht aus, und die angegebene Syntax bringt bei der Verwendung mit IBexpert einen error
Delphi-Quellcode:
 ACTIVE BEFORE INSERT POSITION 0
 AS
 BEGIN
   IF (NEW.ID IS NULL) THEN
     NEW.ID = GEN_ID(GEN_TBL_TEST_ID,1);
wie geht das richtig?

Gruss KH

Hansa 4. Dez 2008 14:22

Re: firebird Trigger
 
Ist : GEN_TBL_TEST_ID grün unterstrichen ? Ansonsten fehlt das.

mkinzler 4. Dez 2008 14:28

Re: firebird Trigger
 
Wenn du den Trigger im IBExpert anlegen lässt, kannst du auch festlegen das der Generator automatisch erzeugt wird.

Hansa 4. Dez 2008 14:40

Re: firebird Trigger
 
Wo kann man das festlegen ? :shock: Unter dem Aspekt, dass man besser nur einen einzigen DB-weiten Generator anlegen sollte und nicht mehrere davon, womöglich für jede Tabelle einen, würde das auch keinerlei Sinn machen.

khh 4. Dez 2008 14:42

Re: firebird Trigger
 
Zitat:

Zitat von mkinzler
Wenn du den Trigger im IBExpert anlegen lässt, kannst du auch festlegen das der Generator automatisch erzeugt wird.


funktioniert jetzt, wenn ich den Generator manuell anlege.
Wo kann das definiert werden dass er automatisch erzeugt wird?


Gruss KH

mkinzler 4. Dez 2008 14:46

Re: firebird Trigger
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also ich lege immer pro Tabelle (für den PK) einen an. Was aus meiner Sicht auch sinn macht!

DeddyH 4. Dez 2008 14:47

Re: firebird Trigger
 
IIRC gleich auf dem ersten Reiter die beiden Checkboxen "Erzeuge Generator" und "Erzeuge Trigger" anhaken.

OK, sind doch 2 verschiedene Reiter. Übrigens lösche ich die If-Abfrage im Trigger immer raus, damit der Wert nicht von außen gesetzt werden kann. Dazu gab es vor langer Zeit mal einen Thread hier.

Hansa 4. Dez 2008 14:59

Re: firebird Trigger
 
Beim Anlegen neuer Tabellenfelder ist rechts eine Checkbox Autoinc. Wird die gecheckt, dann kann man für dieses Feld einen Generator anlegen oder existierenden benutzen.

Zitat:

Zitat von mkinzler
Also ich lege immer pro Tabelle (für den PK) einen an.

Macht man wohl zuerst intuitiv so. Danach aus Angewohnheit, oder um Zahlen zu "sparen". Kennt man sich einigermaßen aus, dann sollte man sich das aber besser wieder abgewöhnen. :mrgreen: Im Normalfall dürfte es keine Auswirkungen haben, aber für Profis in der Praxis irgendwann mächtig Ärger bedeuten.

khh 4. Dez 2008 15:00

Re: firebird Trigger
 
Zitat:

Zitat von DeddyH
IIRC gleich auf dem ersten Reiter die beiden Checkboxen "Erzeuge Generator" und "Erzeuge Trigger" anhaken.

OK, sind doch 2 verschiedene Reiter. Übrigens lösche ich die If-Abfrage im Trigger immer raus, damit der Wert nicht von außen gesetzt werden kann. Dazu gab es vor langer Zeit mal einen Thread hier.


ich danke euch


Gruss Kh

Der Jan 4. Dez 2008 15:49

Re: firebird Trigger
 
Zitat:

Zitat von Hansa

Zitat:

Zitat von mkinzler
Also ich lege immer pro Tabelle (für den PK) einen an.

Macht man wohl zuerst intuitiv so. Danach aus Angewohnheit, oder um Zahlen zu "sparen". Kennt man sich einigermaßen aus, dann sollte man sich das aber besser wieder abgewöhnen. :mrgreen: Im Normalfall dürfte es keine Auswirkungen haben, aber für Profis in der Praxis irgendwann mächtig Ärger bedeuten.

@Hansa: Verrätst du uns auch, warum?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:39 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz