![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Firebird Net Provider
Trigger Before Insert/Update wird nicht ausgeführt, wieso?
Hallo,
ich habe in meiner Datenbank einen Trigger Before Insert and Update vorgemerkt:
SQL-Code:
Die ID ist der PrimaryKey; der Trigger ist aktiv; der Generator existiert. Aber sowohl aus meinem Programm heraus als auch durch
begin
if ( New.Id IS NULL) then New.Id = GEN_ID(Zebu_Aendg_ID, 1); END ![]()
SQL-Code:
Wenn ich den Generator direkt einbaue, funktioniert es:
INSERT INTO Zebu_Aendg ( PLZ, St1Name, St1Kz)
SELECT PLZ, ZBGName, ZBGKenn FROM Quelle_Zebu q WHERE ( Leitraum = :Leitraum ) AND ( SELECT COUNT(*) FROM Zebu z WHERE q.Plz = z.Plz ) = 0;
SQL-Code:
Was kann ich übersehen haben? (Eigentlich weiß ich genau genug, wie ich mit Generatoren und Triggern verfahren muss, aber hier...) Danke! Jürgen
INSERT INTO Zebu_Aendg ( ID, PLZ, St1Name, St1Kz)
SELECT GEN_ID(ZEBU_AENDG_ID,1), PLZ, ZBGName, ZBGKenn /* usw. alles andere unverändert */ |
Re: Trigger Before Insert/Update wird nicht ausgeführt, wies
Ist der Trigger aktiv?
Ist ID wirklich NULL? |
Re: Trigger Before Insert/Update wird nicht ausgeführt, wies
Zitat:
Zitat:
Aber diese Nachfrage bringt mich (vermutlich) auf die Lösung: Die ID ist definiert mit einer Domain:
SQL-Code:
Dies hat FB wahrscheinlich zuerst ausgewertet. Ich werde deshalb den Trigger so ändern:
CREATE DOMAIN D_ID AS INTEGER DEFAULT 0 NOT NULL
SQL-Code:
Danke! Jürgen
begin
IF ( New.Id IS NULL OR New.Id = 0) THEN New.Id = GEN_ID(Zebu_Aendg_ID, 1); END PS. Dieses Problem war ein Beispiel für Betriebsblindheit: ich habe mich in meinen Gedanken festgerannt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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