Einzelnen Beitrag anzeigen

chess

Registriert seit: 6. Mai 2014
10 Beiträge
 
#32

AW: Firebird INTEGER = NotNull

  Alt 26. Jan 2015, 19:09
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.
  Mit Zitat antworten Zitat