Nabend liebe DPler!
Ich möchte gerne eine Datenbank-Update-Funktion in mein Programm einbauen, so, dass ich die META-Daten (Tabellennamen, Feldnamen, Feldtypen, max. längen usw.) aus MEINER Datenbank auslese, in eine bestimmte Datei abspeichere, die die Datei dann weitergeben kann.
Beim Anwender soll das Programm dann die META-Daten mit der Datenbank des Anwenders vergleichen und ggf. die Datenbank anpassen. (neue Tabellen anlegen, Felder ändern, neue Felder anlegen, Felder löschen etc.)
Jetzt zur Frage: Wie kann ich die META-Daten sauber auslesen?
im Moment bin ich auf dieses hier gestoßen:
SQL-Code:
SELECT r.RDB$FIELD_NAME AS field_name,
r.RDB$RELATION_NAME AS tablename,
r.RDB$DEFAULT_VALUE AS field_default_value,
r.RDB$NULL_FLAG AS field_not_null_constraint,
f.RDB$FIELD_LENGTH AS field_length,
t.RDB$TYPE_NAME as field_type
FROM RDB$RELATION_FIELDS r
LEFT JOIN RDB$FIELDS f ON r.RDB$FIELD_SOURCE = f.RDB$FIELD_NAME
LEFT JOIN RDB$TYPES t on f.RDB$FIELD_TYPE = t.RDB$TYPE
LEFT JOIN RDB$COLLATIONS coll ON f.RDB$COLLATION_ID = coll.RDB$COLLATION_ID
LEFT JOIN RDB$CHARACTER_SETS cset ON f.RDB$CHARACTER_SET_ID = cset.RDB$CHARACTER_SET_ID
WHERE r.RDB$SYSTEM_FLAG=0
AND t.RDB$FIELD_NAME = 'RDB$FIELD_TYPE'
ORDER BY r.RDB$FIELD_POSITION;
ergibt folgendes Ergebnis:
Code:
FIELD_NAME TABLENAM FIELD_DEFAULT_VALUE FIELD_NOT_NULL_CONSTRAINT FIELD_LENGTH FIELD_TYPE
TABELLE TABELLEN NULL 1 255 VARYING
FELD TABELLEN NULL 255 VARYING
TYP TABELLEN NULL 255 VARYING
LAENGE TABELLEN NULL 4 LONG
OPTIONEN TABELLEN NULL 255 VARYING
Die Feldtypen machen mir nun ein bisschen Probleme... Eigentlich sind die Felder als VARCHAR(255) deklariert, was intern anscheinend als VARYING verarbeitet wird. Gibt es eine saubere Möglichkeit, diese Feld_typen nun
SQL-Komform zu benennen? Schließlich erstelle ich die Tabelle ja so:
SQL-Code:
CREATE TABLE TABELLEN (
TABELLE VARCHAR(255) NOT NULL,
FELD VARCHAR(255),
TYP VARCHAR(255),
LAENGE INTEGER,
OPTIONEN VARCHAR(255)
);
Hoffe ihr versteht mein Problem...
Vielen Dank im Voraus