Einzelnen Beitrag anzeigen

HPB

Registriert seit: 2. Jun 2008
365 Beiträge
 
Delphi XE7 Professional
 
#1

Datenbank-Update zur Laufzeit

  Alt 20. Nov 2015, 11:51
Datenbank: Interbase • Version: XE2 • Zugriff über: IB
Guten Tag Delphianer,
ich habe die verschiedenen Themen zu einem Datenbankupdate die hier im Forum stehen
gelesen. Es ist aber alles nicht das was ich suche.
Folgende Situation:
Ich möchte einige Tabellen in einer Interbase-Datenbank zur Laufzeit updaten,
oder auch Felder zu Tabellen hinzufügen.
Vorher prüfe ich ob eine Update nötig ist. Das ist alles klar.

Um was es mir geht ist folgendes:
Wenn ich ein Update ausführen möchte, muss ich ja die Datenbank öffnen.
Wenn die DB geschlossen ist, kann ich nicht auf die Transaction zugreifen usw.
Beim User sind aber die Änderungen in der DB noch nicht bekannt.
Ein öffnen führt also zu einer Fehlermeldung (siehe Anhang, das Feld soll
erst hinzugefügt werden).

Das Update wird von einem SQL-Scipt Ausgeführt.
Um die Änderung in die Datenbank zu übernehmen wird eine Transaction geöffnet
und hinterher mit Commit geschlossen.

Hier ein klein wenig Code:
Delphi-Quellcode:
procedure TOLogenUpdate2420.NeueTabelleMatrikelNr;
begin
  try
    dtmdMain.DoStartTransaction;
    FMSQL.Close;
    FMSQL.SQL.Clear;
    FMSQL.SQL.Add('create table matrikelnummern (');
    FMSQL.SQL.Add('matrikelnr integer not null ) ');
    FMSQL.Prepare;
    FMSQL.ExecQuery;

    FMSQL.Close;
    FMSQL.SQL.Clear;
    FMSQL.SQL.Add('alter table matrikelnummern add primary key (matrikelnr)');
    FMSQL.Prepare;
    FMSQL.ExecQuery;
  finally
    dtmdMain.ibtrnsctnLoge.Commit;
  end;
end;
Dazu die Transaction aus der Datenbank:
Delphi-Quellcode:
procedure TdtmdMain.DoStartTransaction;
begin
  if not ibtrnsctnLoge.InTransaction then ibtrnsctnLoge.StartTransaction;
end;
Wie kann die Fehlermeldung umgangen werden????
Ich möchte nicht jedesmal die gesamte DB-Struktur und die enthaltenen Daten exportieren.
Das ist keine Option, in manchen Tabellen stehen tausende von Datensätze.
Welchen Weg gibt es noch um ein Update durchzuführen?

Die Fehlermeldung ist im Anhang beigefügt.

Wenn Vorschläge, dann bitte mit Beispiel.

Mit Gruß HPB
Miniaturansicht angehängter Grafiken
fehler-db-oeffnen.png  
  Mit Zitat antworten Zitat