![]() |
Interbase Generator Autogenerierung
Moin und Hallo in den Süden
ja die Generatoren verfolgen mich immernoch: Jetzt geht es um die Einträge der generierten Werte in die Tabelle Zunächst der Teil der geht :-) CREATE TABLE adress_basis ( ADR_BAS_PID INTEGER, ADR_BAS_Titel CHAR(50), ADR_BAS_NameFull CHAR(50), ADR_BAS_Company_Job CHAR(50), ADR_BAS_Street_No CHAR(50), ADR_BAS_Post_Town CHAR(50), ADR_BAS_County_State CHAR(50), ADR_BAS_Info_Person_FNT BLOB, ADR_BAS_Visualfield_FNT BLOB, ADR_BAS_Phone CHAR(50), ADR_BAS_Fax CHAR(50), ADR_BAS_EMail CHAR(50) ); CREATE INDEX PRIMARYINDEX ON adress_basis (ADR_BAS_PID); CREATE GENERATOR adress_basis; INSERT INTO adress_basis ( ADR_BAS_PID, ADR_BAS_Titel, ADR_BAS_NameFull ) VALUES (GEN_ID( adress_basis,1) , 'keiner' , 'Heinz Becker' ) ; /* Ok bis hierhin läuft alles bestens, inklusive der automatischen Generierung des ID-Eintrags. Nun soll man aber mit einer kleinen Procedure den Ausdruck (GEN_ID( adress_basis,1) im Insert ausdruck umgehen können, genauer gesagt weglassen und dann ebenfalls den ersten Value eintrag. Gefunden habe ich folgendes SET TERM !! ; CREATE TRIGGER Trigger1 FOR adress_basis before insert position 0 as begin NEW.ADR_BAS_PID = GEN_ID(adress_basis,1); end !! SET TERM ; !! Mein PROBLEM: WIBSQL beschwert sich bei dem SET TERM Ausdruck und es kommt vom Server eine Fehlermeldung"Token nicht erkannt". Greife derzeit über ODBC zu. Habe den Eintrug, dass irgendwo noch ein Schalter umgestellt werden müßte.. Naja da hakt´s halt. So long // Martin :coder: |
Zitat:
Aber egal. Hier ist das was bei mir in diesem Zusammenhang in der DB steht :
Code:
CREATE GENERATOR GEN_KUNDE8_ID;
SET GENERATOR GEN_KUNDE8_ID TO 1476; SET SQL DIALECT 3; SET NAMES ISO8859_1; SET TERM ^ ; CREATE TRIGGER KUNDE8_BI0 FOR KUNDE8 ACTIVE BEFORE INSERT POSITION 0 AS begin IF (NEW.ID IS NULL) THEN NEW.ID = GEN_ID (GEN_KUNDE8_ID,1); end |
Hallo
erstmal Danke für das Codebeispiel, absolut korrekt. Hier kommt nun die Lösung warum mein Code zunächst nicht läuft. 1. Nun ja der ODBC Scheint wohl bestimmte Befehle nicht korrrekt durchzureichen. Das gilt insbesondere für die SET Befehle. 2. Obwohl ich es in mehreren Interbase Beispielen gesehen habe darf man offensichtlich bei Firebird mit dem SET TERM Befehl das Endkennungszeichen nicht auf ein Doppelzeichen (bei mir !!) einstellen. Mit einem Zeichen geht es dann (SET TERM ! ; und SET TERM ; ! ). :idea: Hansa, Dein Beispiel hat übrigens geholfen um doch so einige mögliche Fehlerquellen auszuschliessen THANKS ! Grüße // Martin |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 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