Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird: Constraint enable/disable? (https://www.delphipraxis.net/126678-firebird-constraint-enable-disable.html)

hoika 2. Mär 2010 17:54

Re: Firebird: Constraint enable/disable?
 
Hallo,

welche Firebird-Version hast du denn ?
Das läuft wohl erst ab der 2.1er.


Heiko

shadowman 2. Mär 2010 18:16

Re: Firebird: Constraint enable/disable?
 
Hallo Heiko,
wir nutzen die Verison 2.1.1.1.790, also auf jeden Fall die 2.1er.

Klappt aber trotzdem nicht, wie es aussieht.

Generell soll es aber gehen, glaube ich. Steht hier klar drin:
http://www.firebirdfaq.org/faq20/

Zitat:

Alternatively, you can disable the constraints during the import and turn them back on later.
Dummerweise kein Wort darüber, wie man es machen soll.

mschaefer 3. Mär 2010 08:27

Re: Firebird: Constraint enable/disable?
 
Während der Constraint-Deaktivierung darf die Datenbank sicher nicht im Betrieb weitergenutzt werden.
Was würde jetzt eigentlich dagegen sprechen den Server zu stoppen und die DB einfach zu kopieren?

Grüße // Martin

shadowman 3. Mär 2010 12:12

Re: Firebird: Constraint enable/disable?
 
In unserem Fall geht es darum, dass wir während eines Updates einige Systemdatensätze in die DB einfügen wollen / müssen, die miteinander per Constraints zusammenhängen. Es sind zwar korrekte Datensätze und genauso würde man sie auch übers Programm erstellen können theoretisch, also Schritt für Schritt die entsprechenden IDs / Verweise eintragen etc.

Beim Einfügen soll das alles in einem Rutsch passieren und eben das Einfügen klappt nicht, weil die ID des Datensatzes A, die beim Datensatz B eingetragen ist, im selbern Schritt wie Datensatz B eingetragen werden soll.

Ob es an sich richtig ist von der Idee her, sei mal dahingestellt, da es ja in einer Transaktion läuft, könnte man denken, das es geht...

Deswegen die Suche nach einer Möglichkeit, die Consntraints zu deaktiveiren, die Daten einzufügen und dann wieder zu aktivieren. Wenn etwas mit den Daten nicht stimmt, soll beim Aktivieren der Constraints der Fehler kommen, was vollkommen ok wäre.

mschaefer 3. Mär 2010 14:09

Re: Firebird: Constraint enable/disable?
 
Da ich hier noch mit FB 1.5 arbeite würde ich das in 3 Schritten angehen:

1. Datenbankstruktur ohne Constraints viea SQL-DDL neu anlegen.
2. Daten einfügen (ohne constraints) via Insert-Statements
3. Constraints via SQL-DDL hinzufügen


Grüße // Martin

shadowman 3. Mär 2010 14:46

Re: Firebird: Constraint enable/disable?
 
Hi Martin,
für eine neue Datenbank machen wir das genauso und das klappt problemlos.
Die Sache ist, dass wir sowas an bestehenden Datenbanken auch durchführen müssen, sprich die schon bei Kunden im Einsatz sind.
Da ist sowas leider nicht mehr möglich, es sei denn man lösch erst alle Beziehungen, fügt die Daten ein und anschließend erneut die beziehungen, aber das ist keine Lösung, bei der man ein gutes Gefühl hat, glaube ich :)

Danke für Deine Bemühungen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz