![]() |
AW: Firebird INTEGER = NotNull
Ich glaube du weisst weder, was ein Trigger ist, noch was eine Datenbank ist. Und "ist vorgegeben" ist lediglich vorgeschoben. 8-)
|
AW: Firebird INTEGER = NotNull
|
AW: Firebird INTEGER = NotNull
Danke DeddyH :lol:
|
AW: Firebird INTEGER = NotNull
Zitat:
Also nochmals zurück auf Los. Was hast Du wohin willst Du und welche Fragen tauchen dabei auf. Das herumdoktern an Symptomen hilft da nicht wirklich weiter! Gruß K-H |
AW: Firebird INTEGER = NotNull
Stimmt, kommt wirklich nicht so freundlich rüber. Ein Land der Weicheier und Dilletanten nützt allerdings selbst letztgenannten nichts.
|
AW: Firebird INTEGER = NotNull
Natürlich habe ich keine Ahnung von Datenbanken in Delphi usw.
sonst wäre ich nicht in diesem Forum oder? Dank "DeddyH" konnte ich mir mal einen Trigger anschauen. (FlameRobin) Soll dieser Trigger jetzt von Delphi angesteuert werden? Oder übernehme ich diesen Quelltext?
Code:
SET TERM ^ ;
ALTER TRIGGER EINSAETZE_BI ACTIVE BEFORE INSERT POSITION 0 AS DECLARE iEinsatznummer INTEGER; DECLARE iRecordCount INTEGER; DECLARE iEinsatznummerStart INTEGER; DECLARE iEinsatznummerMax INTEGER; BEGIN iRecordCount = 0; iEinsatznummerStart = extract(year from current_date) * 1000000; iEinsatznummerMax = 0; SELECT COUNT(*), max(EINSATZNUMMER) FROM EINSAETZE WHERE (EINSATZNUMMER >= :iEinsatznummerStart) INTO :iRecordCount, :iEinsatznummerMax; IF (iRecordCount >= 1) THEN iEinsatznummer = iEinsatznummerMax; ELSE iEinsatznummer = iEinsatznummerStart; iEinsatznummer = iEinsatznummer + 1; IF (NEW.EINSATZNUMMER IS NULL) THEN NEW.EINSATZNUMMER = iEinsatznummer; END^ SET TERM ; ^ |
AW: Firebird INTEGER = NotNull
Dieser Trigger macht doch schon das, was Du erreichen möchtest, von daher wäre es kontraproduktiv, die Einsatznummer "von außen" zu belegen. Wenn da nun unbedingt eine Eingabe erforderlich ist, kannst Du es ja mal mit NULL bzw. einem Clear-Aufruf versuchen, obwohl ich da auch nicht viel Hoffnung habe.
|
AW: Firebird INTEGER = NotNull
Öffentliche Diskussion beginnen und dann hinter den Kulissen irgendwas machen, was soll das ? Zusammenhang ist dadurch ziemlich durcheinander.
|
AW: Firebird INTEGER = NotNull
Ja
IBexpert Personal Edition Database Workbench free Edition FlameRobin Aber PK sollte man so nie setzen. |
AW: Firebird INTEGER = NotNull
Zitat:
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz