Autor Beitrag
CBRABO
Hält's aus hier
Beiträge: 10

WinXP
Delphi 2007 pro
BeitragVerfasst: Do 20.09.07 11:03 
Hallo Zusammen!

Derzeit entwickle ich gerade an einer Software zur Erstellung von Mieter-Nebenkostenabrechnungen. Zunächst habe ich hierbei auf die BDE gesetzt, die jedoch in einer Vista-Umgebung alles andere als ordentlich und zuverlässig läuft. Somit habe ich den Entschluß gefaßt, die Datenbank nun auf die Embedded-Version vom Firebird umzustellen.

Leider scheitert das Ganze bei mir im Moment jedoch bereits an dem ersten Trigger, der einfach nicht "laufen" will. Eigentlich sollte hiermit ein AutoInc-Feld ID erstellt werden. Beim Einfügen neuer Datensätze auch in der IBOConsole ist das Feld ID jedoch immer NULL. Sobald ich den Datensatz abschicke, erscheint dann die Fehlermeldung, dass ID nicht NULL sein darf. Offensichtlich wird der TRIGGER auch nicht aufgerufen. Auch der Wert im GENERATOR bleibt unverändert.

Zu Testzwecken habe ich nun erstmal nur eine einzige Testtabelle angelegt (ebenfalls mit einem Generator und einem Trigger). Jedoch läuft auch hier der Trigger nicht.

Auch der Versuch, die Datenbank mit dem Interbase zu nutzen, führte zum gleichen Ergebnis.

Die Metadaten sehen wie folgt aus:

ausblenden volle Höhe SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
SET SQL DIALECT 3;

/* CREATE DATABASE 'D:\RAD Studio\Projekte\NK_FireBird_DB\NK 2007.FDB' PAGE_SIZE 4096

 DEFAULT CHARACTER SET NONE */

/* Domain definitions */
CREATE DOMAIN "STR10" AS VARCHAR(10);
CREATE DOMAIN "STR25" AS VARCHAR(25);
CREATE DOMAIN "STR250" AS VARCHAR(250);
CREATE DOMAIN "STR50" AS VARCHAR(50);

/* Table: TEST, Owner: SYSDBA */

CREATE TABLE "TEST" 
(
  "ID"   INTEGER NOT NULL,
  "NAME"   STR25 ,
 PRIMARY KEY ("ID")
);

CREATE GENERATOR "GEN_OBJEKTEID";
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER "TRIG_OBJEKTE" FOR "TEST" 
ACTIVE BEFORE INSERT POSITION 0
AS

begin
  new."ID" = GEN_ID (GEN_OBJEKTEID, 1);
end
 ^

COMMIT WORK ^
SET TERM ;^

/* Grant Roles for this database */


/* Grant permissions for this database */


Vielleicht hat einer von Euch eine Idee, woran es liegen könnte.

Vielen Dank schon mal.

Christoph

Moderiert von user profile iconUGrohne: Code- durch SQL-Tags ersetzt
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 20.09.07 13:23 
Wie fügst du den ein?
Laß mal das Feld im Insert weg.

_________________
Markus Kinzler.
CBRABO Threadstarter
Hält's aus hier
Beiträge: 10

WinXP
Delphi 2007 pro
BeitragVerfasst: Do 20.09.07 14:21 
Super ! Vielen Dank !

Ohne das Feld ID hat es auch mit dem Insert wunderbar funktioniert. In Delphi habe ich das Feld einfach als Default auf 0 gesetzt und dann klappte es auch mit dem DBGrid ohne Probleme.