![]() |
Datenbank: IB • Version: 2020 • Zugriff über: IBConsole
Interbase Trigger
Hallo
ich habe einen Trigger für einen Zählerfeld und ein Feld Kundennr Nun soll der Trigger den Zähler füllen (klappt natürlich) und zusätzlich das Feld Kundennr füllen Anfangsbuchstaben des Kunden und dem Zähler. begin New.Nr = 'K' + GEN_ID(Kunde_Nr, 0); end das klappt so nicht er will das + nicht und String funktionen gibt es auch nicht. Wie bekomme ich das hin und wie kann ich die externen UDF funktionen einbinden? Ach ja ich setze IBLight bzw. ToGo ein falls das noch wichtig ist. |
AW: Interbase Trigger
Die Stringverkettung wird mit zwei Pipes durchgeführt:
Code:
Anmerkung: Dein gen_id-Befehl setzt den Zähler nicht hoch.
‘K‘ || GEN_ID(Kunde_Nr, 0);
|
AW: Interbase Trigger
Hallo Danke,
Das hochzaehlen macht ein anderer Trigger Der an Position 0 steht oder kann ich beides in einen trigger setzen? |
AW: Interbase Trigger
Ja, kann alles in einen Trigger.
|
AW: Interbase Trigger
Der Befehl gen_id liefert Dir den aktuellen Stand des Generators zurück und erhöht dann um den zweiten Parameter.
Also einfach in dem obigen Statement die 0 durch eine 1 ersetzen. |
AW: Interbase Trigger
Das ist mir klar mit dem hochzählen,
Ich habe ja zwei Trigger der 1 zählt ein integer feld hoch der zweite generiert die Kundennr mit dem bleichen Wert. |
AW: Interbase Trigger
Es ist aber nicht sicher gestellt, dass der Generator inzwischen unverändert bleibt.
Eine andere Connection könnte den inzwischen verwendet haben. Am besten das Ergebnis von gen_id() einer Variablen zuweisen und diese dann weiter verwenden. |
AW: Interbase Trigger
Wäre da für eine Lösung mit nur einem Trigger, da kann dann auch nicht zufällig wer anderes zwischenzeitlich den Generatorwert verändert haben, so dass Lücken oder Duplikate entstehen könnten. Und es ist weniger Aufwand bei der Pflege der Datenbanktrigger und man muss nicht darauf achten, dass die beiden bisher betroffenen Trigger auf jeden Fall in der richtigen Reihenfolge aufgerufen werden.
SQL-Code:
begin
New.Nr = 'K'||GEN_ID(Kunde_Nr, 1); end |
AW: Interbase Trigger
Hallo ja habe jetzt einen Trigger der beides füllt klappt super,
meine vorherigen Versuche sind nur an der "||" Stringverbindung gescheitert. Ich habe das letzte mal so um die 2000 mit IB gearbeitet, da hat man vieles vergessen.8-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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 by Thomas Breitkreuz