Tabellenetwurf ändern

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

kabelsalat
Beiträge: 5
Registriert: So, 28.11.2010 18:49

Tabellenetwurf ändern

Beitrag von kabelsalat »

Hallo,

ich möchte gerne zwischen zwei Felder im Tebellenetwurf ein weiteres Feld einfügen.
Gibt es dazu eine Möglichkeit?
Ich kann nur unten ein neues Feld anfügen, die Reihenfolge der bestehenden Felder aber nicht ändern.

Danke
Kabelsalat
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Tabellenetwurf ändern

Beitrag von juetho »

Das scheint im Tabellen-Entwurf von Base tatsächlich nicht zu gehen, ist aber auch völlig unwichtig: Bei einer SQL-Tabelle spielt die Reihenfolge von Spalten und Zeilen überhaupt keine Rolle; es gibt keinen (formalen) Grund, warum eine Spalte unbedingt an der 3. statt an der 7. Stelle kommt. (Unabhängig davon gibt es Tabellen-Editoren, mit denen die Reihenfolge beeinflusst werden, z.B. die MySQL-Workbench, aber eben nicht Base.)

Wenn es in einer praktischen Situation (warum auch immer) wirklich wichtig ist, dann gehe über eine Abfrage (View), am besten über die SQL-Ansicht. Da kannst du die Reihenfolge der Spalten frei bestimmen, und bei passender Definition steht die Abfrage auch für Änderungen zur Verfügung.

Gruß Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Tabellenetwurf ändern

Beitrag von lorbass »

Die einmal vergebene Reihenfolge muss unverändert bleiben. Wie sollten sonst vorhandene Daten korrekt interpretiert werden? Die bleiben nämlich völlig unverändert erhalten.

Macht aber nix, du kannst ja die Reihenfolge im SELECT unabhängig von der Speicherreihenfolge anpassen. Wenn dir das nicht gefällt, musst du die Tabelle droppen und neu anlegen und die vorhandenen Daten migrieren.

Gruß
lorbass
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tabellenetwurf ändern

Beitrag von RobertG »

Aus dem Base-Handbuch, gilt für die eingebaute HSQLDB:

Code: Alles auswählen

ALTER TABLE "Adresse" ADD "Vorname" VARCHAR(25) BEFORE "Name";
Du kannst über die direkte Eingabe von SQL (Extras → SQL) ein Feld an einer beliebigen Position in der Tabelle einfügen.
Die grafische Benutzeroberfläche bietet das nicht, da es eigentlich ohne Belang ist. Die Reihenfolge kannst Du sonst natürlich auch in Abfragen bestimmen.
Wenn ich eine bestimmte Reihenfolge haben möchte, dann würde ich den folgenden Weg gehen:
Tabelle erstellen, alle möglichen Felder zusammensuchen, die da rein gehören - irgendwann später fällt mir vielleicht noch einiges ein, das verschoben werden muss - abwarten.
Anschließend eine neue Tabelle mit der korrekten Reihenfolge erstellen. Die ursprüngliche Tabelle kopieren und wieder in dem Tabellencontainer ablegen. Hier jetzt die Daten an die neue Tabelle anhängen, dabei die korrekte Reihenfolge der Felder wählen.
Zum Schluss die alte Tabelle löschen, die neue Tabelle auf den Namen der alten ändern und die Reihenfolge entspricht Deinen Wünschen.

Gruß

Robert
kabelsalat
Beiträge: 5
Registriert: So, 28.11.2010 18:49

Re: Tabellenetwurf ändern

Beitrag von kabelsalat »

Danke für die Erläuterungen.
Ist auch nicht so wichtig, war nur wegen der Übersichtlichkeit.

Was mich wundert:
lorbass hat geschrieben:Die einmal vergebene Reihenfolge muss unverändert bleiben. Wie sollten sonst vorhandene Daten korrekt interpretiert werden? Die bleiben nämlich völlig unverändert erhalten.
Warum ändert das die Daten?
In einer Access Tabelle kann ich Reihenfolge der Felder immer ändern - und es bleibt alles so wie es ist.

Kabelsalat
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tabellenetwurf ändern

Beitrag von RobertG »

Hallo Kabelsalat,

du siehst ja auch an dem SQL-Befehl, dass in der HSQLDB das Einfügen eines Feldes vor einem anderen Feld ohne Probleme geht. Allein die GUI gibt das nicht her.
Arbeitest Du z.B. mit MySQL, so kannst Du im Nachhinein auch mit
ALTER TABLE Tabelle CHANGE COLUMN Spalte ...
die Position ändern.

Gruß

Robert
Antworten