Superbatmann: DB-Tabellenspalte verschieben

Hallo,

ich will in einem Makro eine Tabellenspalte, die ich an das Ende einfüge, an die 2.Stelle der Tabelle schieben. Ich habe es mit folgendem SQL-Befehlt versucht:

ALTER TABLE tab ADD spalte_neu AFTER spalte_1

Das Programm liefert mir einen Fehler in der ALTER TABLE-Anweisung zurück.
Ohne AFTER-Anweisung steht die Spalte am Ende der Tabelle.

Wie bekomme ich die Spalte dort weg ?

Danke für Eure Hilfe.

SQL-Code und VBA-Code sind willkommen...

  1. Die genaue Fehlermeldung wäre für UNS hier auch durchaus willkommen!
    Und die genaue version der DB mit der Du arbeitest. MSSQL 2000?

    Gruß, Markus

  2. echo $begrüßung;

    Ohne AFTER-Anweisung steht die Spalte am Ende der Tabelle.
    Wie bekomme ich die Spalte dort weg ?

    SELECT spalte_1, spalte_neu, spalte_2, ...

    Du kannst beim SELECT jede beliebige Reihenfolge angeben, unabhängig davon, wo die Spalte steht. Außerdem kann man meist auch im abfragenden Programm in jeder beliebigen Reihenfolge die Ausgabe vornehmen.

    Ich weiß nicht, ob alle DBMS die Ein-/Umsortierung von Spalten unterstützen. Wenn ja, dann steht die genaue Syntax in der jeweiligen Dokumentation. Wenn du die passende Stelle nicht findest, nenn uns den Namen deines DBMS ...

    echo "$verabschiedung $name";

  3. Hi,

    ich will in einem Makro eine Tabellenspalte, die ich an das Ende einfüge, an die 2.Stelle der Tabelle schieben.

    Warum fügst du sie nicht gleich weiter vorne ein?

    Ich habe es mit folgendem SQL-Befehlt versucht:

    ALTER TABLE tab ADD spalte_neu AFTER spalte_1

    Da fehlt noch der Datentyp (und andere optionale Eigenschaften wie primär-schlüssel, default Wert, ...) von spalte_neu:
    http://dev.mysql.com/doc/refman/5.0/en/alter-table.html

    Außerdem erzeugt dir der "ALTER TABLE ... ADD COLUMN" befehl nur eine neue (leere) Spalte. Diese musst du dann noch mit Werten füllen:

    UPDATE TABLE SET spalte_neu=spalte_alt;

    und dann noch die spalte_alt löschen:

    DROP COLUMN spalte_alt;
    (hier würde ich aber vorher nochmal überprüfen ob die vorhergehenden Anweisungen funktioniert haben)

    Das Programm liefert mir einen Fehler in der ALTER TABLE-Anweisung zurück.

    Wie dir schon geschrieben wurde wäre diese interessant für uns um zu helfen. Außerdem wäre noch das DBMS das du benutzt interessant.  Ich habe einfach mal geantwortet, wie es unter mySql 5 geht.

    Ohne AFTER-Anweisung steht die Spalte am Ende der Tabelle.

    Welchen Befehl hast du hierfür verwendet?
    Dabei hast du wohl auch einen Datentyp angegeben, oder?

    Wie bekomme ich die Spalte dort weg ?

    DROP COLUMN ... ;-)

    mfG,
    steckl