AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird Trigger und CONSTRAINT
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Trigger und CONSTRAINT

Ein Thema von hanspeter · begonnen am 3. Jan 2013 · letzter Beitrag vom 4. Jan 2013
Antwort Antwort
Seite 1 von 2  1 2      
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 10:41
Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC
Hallo,

ich versuche gerade eine alte Interbase Datenbank nach Firebird zu migrieren.

Backup unter IB und Restore unter FB klappt (manchmal) bringt aber unreproduzierbare Fehler.
(Unterschiedliche Gbak sind verwendet.) Die Datenbank muss anschließend ziemlich aufwendig angepasst werden.
So z.B. mit gfix von SQL 1 auf SQL 3 u.s.w.

Ich versuche jetzt die Datenbank neu anzulegen und dann Tabelle für Tabelle zu übertragen.
Das funktioniert erst mal nicht, da Trigger und Constraints das Füllen einzelner Tabellen nicht zulassen.
Ich habe jetzt versucht, die Datenbank in 2 Phasen zu erzeugen.
1. Nur Tables anlegen und importieren.
2. Index,Trigger , Storedprocedure und Constraints definieren.

Teil 1 geht, bei Teil 2 bekomme ich Fehler.
Da ich die Datenbank komplett aus den Metadaten erzeugen kann, nicht aber phasenweise, gibt es eine Möglichkeit Triger und Constraints temporär abzuschalten?

Für einen Tip dankbar.

Gruß
Peter
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#2

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 10:53
ALTER TRIGGER trigger_name INACTIVE;
ALTER TRIGGER trigger_name ACTIVE;

Constraints können nicht deaktiviert werden.

Aber eigentlich müsstest du doch (wie schon geschrieben) die Struktur und die Daten importieren können und anschließend die Trigger, Constraints usw. setzen können. Dabei musst du ggf. die logische Reihenfolge beachten. Aber eigentlich sollte das doch gehen
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 11:32
Jetzt bin ich etwas weiter.
Es scheint das FB die Datenprüfung genauer als der alte IB-Server nimmt.
Hier mal die Fehlermeldung.

violation of FOREIGN KEY constraint "".
violation of FOREIGN KEY constraint "KF_KS" on table "KEY_FUNKTION".
Foreign key reference target does not exist.
************************************************** *****************************/
ALTER TABLE KEY_FUNKTION ADD CONSTRAINT KF_KS FOREIGN KEY (KSNR) REFERENCES KEYSYSTEM (KSNR) ON DELETE CASCADE ON UPDATE CASCADE;

So richtig sehe ich die Fehlerursache noch nicht.

Hat wer noch einen Tip?

Gruß Peter
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#4

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 11:38
Kannst du bis hierhin die mal bereits angelegte Struktur der betroffenen Tabellen posten? Inkl. Constaints, Indizies usw....
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 12:49
Kannst du bis hierhin die mal bereits angelegte Struktur der betroffenen Tabellen posten? Inkl. Constaints, Indizies usw....
Leider nicht. (Geheimhaltungsbestimmung des Auftraggebers)
Ich denke aber das es sich um importierte Fehler aus IB handelt.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 12:52
Leider nicht. (Geheimhaltungsbestimmung des Auftraggebers)
Ich denke aber das es sich um importierte Fehler aus IB handelt.
würde ich auch vermuten. Also die Daten per SQL abfragen und nach DB-Leichen suchen. Anders kommst Du da nicht zurande..

Die Metadatenanpassung von Firebird 2.1 hast Du auch gemacht (<Install>\Firebird_2_1\misc\upgrade\metadata)?

GRüße
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 13:25
würde ich auch vermuten. Also die Daten per SQL abfragen und nach DB-Leichen suchen. Anders kommst Du da nicht zurande..

Die Metadatenanpassung von Firebird 2.1 hast Du auch gemacht (<Install>\Firebird_2_1\misc\upgrade\metadata)?

GRüße
Nein.
Ich habe die Metadaten mit IBExpert in Interbase ausgegeben. (Der IB Server läuft auf meinem 64 bit OS nicht mehr als Dienst und muss manuell gestartet werden.)
Den Script habe ich fehlerbereinigt. Ohne Daten funktioniert das Anlegen einer leeren Datenbank.

Dann habe ich diesen Script geteilt in Domain/Tabellen und den ganzen Rest.
Ich erzeuge über IBDAC eine leere Datenbank.
Diese fülle ich nur über SQL Anweisungen. Dazu habe ich mir ein Tool gebaut, welches aus einem Select * From ... eine parameterisierte Insert Anweisung generiert und die
Parameter aus der Selektion füllt.
Realisiert mit IBDAC. Da der Fehler nur bei einigen Constaints auftritt, wird es wohl an den Daten liegen.
Das Problem ist halt, das ich eine grundsätzliche Lösung finden muss, da das Teil als Migrationstool beim Anwender laufen muss.


Grüße
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 13:34
ah klar - dann musst da da nichts machen. Aber das mit dem automatischen Tool wird schwer - außer du prüfst vor der ersten Datenübernahme die ganzen Constraints manuell per SQL ab und korrigierst die noch in der "alten" Version
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 14:06
Mal eine dumme Frage.

Die Anweisung

ALTER TABLE AKTIVTARGET ADD CONSTRAINT FK_AKTIVI_AV FOREIGN KEY (PLANNR, PERSNR) REFERENCES AKT_PERSID (PLANNR, LFDNR)

bedeutet doch das das Schlüsselpaar PLANNR, PERSNR in AKTIVTARGET eine Referenz auf PLANNR, LFDNR in AKT_PERSID haben muss.

Referenz von PERSNR auf LFDNR sieht mir wie Unsinn = Altlast aus die FB nicht mehr schluckt oder mache ich hier einen Denkfehler.

Gruß
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.005 Beiträge
 
Delphi 2009 Professional
 
#10

AW: Firebird Trigger und CONSTRAINT

  Alt 3. Jan 2013, 15:09
IBExpert enthält eine Funktion für den Export der gesamten Datenbank (Metadaten und Daten) als SQL-Skriptdatei, die im Prinzip so aufgebaut ist dass RI / Constraints keine Probleme verursachen sollten.

Wenn ich mich richtig erinnere war es ein externes Kommandozeilenprogramm, aber es ist schon ein paar Jahre her dass ich es benutzt habe.
Michael Justin
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 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