Beate Mielke: ORACLE - Spalte umbenennen

Hallo ForumerInnen,

nachdem mir es mit viel Mühe gelungen ist, in eine ORACLE-Tabelle eine neue Spalte hinzuzufügen, mußte ich leider feststellen, dass ich mich bei dem Namen der Spalte verschrieben habe.
Gibt es eine einfacheMöglichkeit, den Namer einer Spalte umzubenennen?

Und gibt es eventuell eine deutsche Doku?

Gruss

Beate Mielke

  1. Hallo,

    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.

    Also entweder eine neue Spalte mit

    ALTER TABLE Tabellenname ADD Spaltenname Datentyp;

    und die alte einfach liegenlassen.....oder neue Tabelle

    also erst

    DROP Tabellenname;

    CREATE TABLE Tabellenname
         ( Feld1 Datentyp [ NOT NULL ],
         Feld2 Datentyp ,
         Feld3 Datentyp [ NOT NULL ]...);

    Für eine Doku mußt du mal in einer Suchmaschine schauen....mehrere Rechenzentren bieten eine Einführung in SQL und eventuell auch Oracle.
    Es gibt aber auch eine ganze Menge, Teils auch recht günstige Bücher zu dem Thema.

    bis dann.......dirk

    1. Hallo Dirk,

      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.

      ich hab's ja geahnt ...

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

      Was die Doku betrifft, im Internet habe ich schon gesucht. Letztendlich landet man immer bei der englisch-sprachigen Original-Doku, die mir nicht gerade gefällt.
      Dafür kann man sich mit MySQL-Dokus bzw. -Tutorials totschmeissen.

      Danke für Deine Hilfe!

      Gruß

      Beate Mielke

      1. 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

        1. Hallo Michael,

          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.

          Das ist ja ein richtig guter Tip - wird gleich notiert.

          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 ...)

          Das ist wohl einzusehen.

          Danke und viele Gruesse

          Beate Mielke