Michael Schröpl: ORACLE - Spalte umbenennen

Beitrag lesen

Hi,

ich sag es ja nur ungern, aber das geht nicht........man kann Spalten weder löschen noch umbennen. Man kann in einer Spalte nur Datatypen und NULL / NOT NULL ändern. Das zweite ist auch schon oft genug mit Problemen belastet.

Wie groß sind die besagten Tabelleninhalte?

Falls die Tabelle nicht signifikant viel Platz im Tablespace einnimmt, geht folgendes ruck-zuck:

1. rename <alteTabelle> to tmp;
2. create table <neueTabelle> (...);
3. insert into <neueTabelle> select * from <alteTabelle>
   (Obwohl die Feldnamen nicht passen! Es reicht, wenn die gleichen Datentypen in der gleichen Reihenfolge vorliegen.)
4. drop table <alteTabelle>;
"create table"-statements habe ich grundsätzlich als Quelltextdateien.

ich hab's ja geahnt ...

Richtige Probleme bekommst Du wohl erst, wenn Deine Tabelle über Constraints von anderen Tabellen referenziert wird.
(Und damit hast Du dann auch den Grund, weshalb ein "Spalten-rename" oder ein "Spalten-Löschen" gar nicht völlig trivial zu implementieren wäre ...)

  • ähm - irgendwie kann ich ORACLE nicht so richtig leiden - ;-)

Ich schon. ;-)
Ich will zu keiner Datenbank wechseln, die signifikant weniger kann.

mfg - Michael