Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Klatsch und Tratsch (https://www.delphipraxis.net/34-klatsch-und-tratsch/)
-   -   Firebird Flamerobin Tabellen per Script erstellen (https://www.delphipraxis.net/154912-firebird-flamerobin-tabellen-per-script-erstellen.html)

Grolle 30. Sep 2010 15:37

Firebird Flamerobin Tabellen per Script erstellen
 
Hallo,

habe mir mittels Flamerobin meine Datenbanktabellen per DDL als Script ausgeben lassen. Wenn ich dieses nun zum erstellen der Tabellen nutzen will bekomme ich bei den Triggern die folgende Fehlermeldung:

Zitat:

Error: *** IBPP::SQLException ***
Context: Statement :: Prepare(
CREATE TRIGGER "contact2group_BI" FOR contact2group ACTIVE
BEFORE INSERT POSITION 0
as
begin
if (new."id" is null) then
new."id" = gen_id("GEN_contact2group_ID",1);
end )
Message: isc_dsql_prepare failed

SQL Message : -204
Undefined name

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -204
Table unknown
CONTACT2GROUP
At line 2, column 39
Was geht da schief?

Viele Grüße ...

shmia 30. Sep 2010 16:37

AW: Firebird Flamerobin Tabellen per Script erstellen
 
Du erzeugst einen Triger auf eine Tabelle, die es nicht gibt:
Zitat:

Code:
Table unknown
CONTACT2GROUP

Beim Erzeugen einer Datenbank mit mehreren Tabellen, Views, Triggern, usw.
ist die Reihenfolge der DB-Objekte wichtig.
Z.B. müssen zuerst die Tabellen erzeugt werden, bevor man davon abhängig Dinge wie Views oder Trigger erzeugen kann.

Untersuche mal dein Script, ob diese Reihenfolge für die Tabelle contact2group eingehalten wird.
Es könnte auch daran liegen, dass der Generator "GEN_contact2group_ID" noch nicht exisitiert.

Grolle 30. Sep 2010 17:06

AW: Firebird Flamerobin Tabellen per Script erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Flamerobin hat mir das so rausgeschmissen! Also, zuerst werden die Generatoren erstellt, dann die Tabellen und anschließend die Trigger?!
Habe das Script mal angehängt.

Viele Grüße ...

shmia 30. Sep 2010 17:23

AW: Firebird Flamerobin Tabellen per Script erstellen
 
Zitat:

Zitat von Grolle (Beitrag 1052998)
Also, zuerst werden die Generatoren erstellt, dann die Tabellen und anschließend die Trigger?!

Ich würde sagen, das ist die richtige Reihenfolge.
Kannst ja mal schauen, ob die Tabelle "contact2group" angelegt wurde, nachdem das Script mit Fehler abgebrochen wurde.
2 Dinge fallen mir noch auf:
a.) es wurden keine Primärschlüssel gesetzt; das ist aber sehr wichtig.
b.) Die Tabelle "contact2group" hat ein überflüssiges und störendes Feld "Id"
SQL-Code:
CREATE TABLE "contact2group"
(
  "contact_id" Integer,
  "group_id" Integer
);
Ohne dieses Feld braucht man keinen Trigger.
Die Felder "contact_id" und "group_id" reichen aus um die Verknüpfung zwischen "contact" und "group" eindeutig zu bestimmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz