Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird INTEGER = NotNull (https://www.delphipraxis.net/183653-firebird-integer-%3D-notnull.html)

Hansa 26. Jan 2015 18:56

AW: Firebird INTEGER = NotNull
 
Dreh- und Angelpunkt ist das hier :
Delphi-Quellcode:
NEW.EINSATZNUMMER IS NULL
. Wenn du da selber eingreift, d.h. der Einsatznummer einen Wert zuweist, dann ist die eben nicht mehr NULL und der Trigger tritt nicht mehr automatisch in Aktion.

chess 26. Jan 2015 19:09

AW: Firebird INTEGER = NotNull
 
Zitat:

Zitat von Dejan Vu (Beitrag 1287854)
Zitat:

Zitat von strom (Beitrag 1287842)
Code:
ALTER TRIGGER EINSAETZE_BI ACTIVE
BEFORE INSERT POSITION 0
...
    IF (NEW.EINSATZNUMMER IS NULL) THEN NEW.EINSATZNUMMER = iEinsatznummer;
...

Deshalb (und weil Du bei Dir die 'Einsatznummer' selber setzt, funktioniert das nicht.

Allerdings sollte der Ersteller des Triggers geteert und gefedert werden. Eine Grundregel der Datenbankprogrammierung lautet: Kodiere niemals(!) das primäre Schlüsselfeld. Niemals! Du kannst eine fortlaufende Nummer vergeben, oder -auch das ist legitim- einen eindeutigen Code, aber ein Primärschlüssel soll nie 'sprechend' sein.

Man kann zusätzlich zum Primärschlüsselfeld noch ein weiteres Feld angeben (mit unique-constraint), das dann mit derartigem Kram gefüllt ist. Aber das ist dann eben irgend eine 'Bezeichnung' des Datensatzes.

Ich würde nach dem was ich bisher weiß (12. klasse) einen pk in der datenbank immer bei firebird über generator/trigger laufen lassen.
man kann aber neue felder/spalten z.b. als computed fields machen.
gruß
a.c.

Dejan Vu 26. Jan 2015 19:23

AW: Firebird INTEGER = NotNull
 
Würde ich auch so machen. Das konkrete Aussehen eines PK ist so unwichtig, das man das generell immer gleich behandelt sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:07 Uhr.
Seite 4 von 4   « Erste     234   

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