Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#1

Trigger Before Insert/Update wird nicht ausgeführt, wieso?

  Alt 27. Nov 2007, 10:12
Datenbank: Firebird • Version: 2.0 • Zugriff über: Firebird Net Provider
Hallo,

ich habe in meiner Datenbank einen Trigger Before Insert and Update vorgemerkt:
SQL-Code:
begin
  if ( New.Id IS NULL)
  then New.Id = GEN_ID(Zebu_Aendg_ID, 1);
END
Die ID ist der PrimaryKey; der Trigger ist aktiv; der Generator existiert. Aber sowohl aus meinem Programm heraus als auch durch IBExpert scheitert der folgende Befehl mit der Fehlermeldung "Verletzung der Eindeutigkeit bei ID":
SQL-Code:
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;
Wenn ich den Generator direkt einbaue, funktioniert es:
SQL-Code:
INSERT INTO Zebu_Aendg ( ID, PLZ, St1Name, St1Kz)
     SELECT GEN_ID(ZEBU_AENDG_ID,1), PLZ, ZBGName, ZBGKenn
  /* usw. alles andere unverändert */
Was kann ich übersehen haben? (Eigentlich weiß ich genau genug, wie ich mit Generatoren und Triggern verfahren muss, aber hier...) Danke! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat