![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: SQL
Datenbank Update Strategien
Hallo,
nen Freund und ich stehen vor ein Problem, und wie am Titel erkennbar, handelt es sich um Datenbank Updates. Kennt ihr Strategien zur Datenbank-Strucktur-Aktualisierung? Wie überprüft man z.B. den Typ eines Feldes o.ä.? Vielen Dank schon mal. Gottes Segen |
Re: Datenbank Update Strategien
Hallo,
ich verwende gerne einen book keeping Ansatz. Dazu wird eine spezielle Tabelle eingeführt, die für jede Tabelle eine fortlaufende Versionsnummer enthält. Beim Programmstart überprüfe ich, ob die geforderten Versionen vorliegen. Wenn nicht, dann muss der Admin ein bereit gestelltes Programm ausführen, mit dem neue Felder eingeführt, alte Felder gelöscht oder umbenannt werden können, etc. Danach wir die Versionsnummer der geänderten Tabellen hochgezählt. Alternativ könnte man die Metadaten auslesen und interpretieren, aber diesen Ansatz halte ich für unnötig aufwendig. Grüße vom marabu |
Re: Datenbank Update Strategien
Hallo marabu,
danke erstmal für die Antwort. Deine Lösung is sicher nicht schlecht, jedoch scheint mir dies auch recht aufwendig. Aber die Metadaten auslesen is ungleich mehr Aufwand, wie du ja auch schriebst... Werd mal drüber nachdenken. Für weitere Vorschläge bin ich weiterhin dankbar. Gottes Segen |
Re: Datenbank Update Strategien
marabu sein Vorschlag ist super. Danke! :-D
@Meta777, wenn wir hier von einer DB ausgehen mit 100 Objecten (Table, usw.) ist es einfacher, die in einer Tabelle zu speichern und eine Versionnr zu führen. Ich selber habe vor dem gleichen Problem gestanden. Ich wollte das so realisieren, das bei einem Programmupdate und Änderung der DB-Struktur, diese automatisch überprüpft und ggf. aktualisiert wird. Aber dazu must in den Systemtabellen von Firebird hinein um die Domains, Tabellen, Procedure usw. ranzukommen. Und um Änderungen vorzunehmen wirst Du dann logischer Weise ebenfalls diese direkt in den Systemtabellen vornehmen (ABER VORSICHT). Da du ja die Zeichenlänge z.Bsp. nicht mehr verändern kannst, wenn bereits Daten in der DB vorliegen, somit muss die Änderung in der Systemtabelle erfolgen. Wenn Du also die Zusammenhänge in den Systemtabellen nicht genau kennst, dann lasse die Finger davon. Hier mal was zum probieren. Table auslesen:
SQL-Code:
Table-Fields auslesen:
SELECT RDB$RELATION_NAME, RDB$INDEX_NAME, RDB$INDEX_INACTIVE
FROM RDB$INDICES WHERE RDB$RELATION_NAME NOT STARTING 'RDB$' ORDER BY RDB$RELATION_NAME
SQL-Code:
Primary-Key auslesen:
Select RDB$FIELD_NAME from RDB$RELATION_FIELDS
where RDB$RELATION_NAME='Table_NAME' order by RDB$FIELD_POSITION
SQL-Code:
Procedure auslesen:
select i.rdb$field_name
from rdb$relation_constraints r, rdb$index_segments i where r.rdb$relation_name= 'DB_AKTEN' and r.rdb$constraint_type='PRIMARY KEY' and r.rdb$index_name=i.rdb$index_name order by i.rdb$field_position
SQL-Code:
Procedure-Parameter auslesen:
Select rdb$procedure_name From rdb$procedures
SQL-Code:
Index auslesen:
select RDB$PARAMETER_NAME,
RDB$PARAMETER_NUMBER, RDB$PARAMETER_TYPE from RDB$PROCEDURE_PARAMETERS WHERE RDB$PROCEDURE_NAME = 'Procedure_Name'
SQL-Code:
Generatoren auslesen:
select * from rdb$index_segments
where rdb$index_name not starting 'RDB$' order by rdb$index_name
SQL-Code:
SELECT RDB$GENERATOR_NAME
FROM RDB$GENERATORS WHERE rdb$generator_Name Not Like 'RDB$%' AND (rdb$generator_Name Not Like 'SQL$%') |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 Uhr. |
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