Oracle bewegt Spalte an die erste Position

7

Gibt es eine Möglichkeit, eine Spalte in einer Oracle-Tabelle von der letzten zur ersten Position zu verschieben? Jemand hat die ID-Spalte gelöscht und neu erstellt. Jetzt ist es am Ende, was ein Problem ist, da einige unserer PHP-Skripte die erste Spalte als Bezeichner verwenden (ein Abstraktes Modell mit mehr als 100 anderen Modellen, die dieses Basisobjekt verwenden).

Siehe auch

  
    
opHASnoNAME 01.12.2009, 08:00
quelle

8 Antworten

15

Die Oracle FAQ lautet:

  

Oracle erlaubt nur das Hinzufügen von Spalten zum Ende einer vorhandenen Tabelle.

Sie müssten Ihre Tabelle neu erstellen.

%Vor%     
nickf 01.12.2009, 08:04
quelle
7

Die einfachste Möglichkeit, die logische Reihenfolge der Spalten einer Tabelle zu ändern, besteht darin, die Tabelle umzubenennen und eine Ansicht mit den Spaltenpositionen "rechts" zu erstellen:

%Vor%

Ihre Anwendung verhält sich so, als wären die Spalten in der "richtigen" Position. Sie müssen die physische Struktur nicht berühren.

    
Vincent Malgrat 01.12.2009 09:29
quelle
1

Die Tabelle neu zu erstellen (über Umbenennen / temporäre Tabelle, damit Sie Ihre Daten nicht verlieren) ist der einzige Weg, den ich kenne.

Ich glaube nicht, dass es einfach ist, die Spaltenreihenfolge zu ändern.

    
cagcowboy 01.12.2009 08:03
quelle
1

Wenn nicht viele Daten / Spalten vorhanden sind, können Sie die Spalten einfach in der gewünschten Reihenfolge umbenennen. Dann lösche einfach * aus 'Dein Tabellenname hier'. Dies war eine gute Lösung für mich, da ich noch nicht viele Aufzeichnungen eingefügt hatte.

    
user6506106 04.10.2016 16:50
quelle
1

In Oracle 12c ist es jetzt einfacher, Spalten logisch neu anzuordnen. Dies kann erreicht werden, indem die Spalte unsichtbar / sichtbar gemacht wird. Wenn Sie eine unsichtbare Spalte in "sichtbar" ändern, erscheint die Spalte zuletzt in der Reihenfolge.

Berücksichtigen Sie die Verwendung unsichtbarer Spalten

Erstellen Sie eine wxyz-Tabelle:

CREATE TABLE t (     w INT,
    y VARCHAR2,     z VARCHAR2,     x VARCHAR2

);

Ordne die x-Spalte in der Mitte an:

ALTER TABLE wxyz ÄNDERN (y INVISIBLE, z INVISIBLE); ALTER TABLE wxyz ÄNDERN (y VISIBLE, z SICHTBAR);

BESCHREIBEN wxyz;

Name

w

x

y

z

    
Sulaha 21.11.2017 09:56
quelle
0

Nicht möglich, Spalte in Oracle zu verschieben. Es wird an der letzten Position erstellt. Wenn jemand wollte, muss entweder eine Ansicht erstellt oder eine neue Tabelle erstellt werden.

    
Samrat Mondal 21.03.2017 11:28
quelle
0

Sie möchten möglicherweise über eine Ansicht auf Ihre Tabelle zugreifen, sodass Sie die logische Reihenfolge problemlos neu anordnen können, wenn sie für die Anwendungstechnologie wichtig ist.

    
David Aldridge 01.12.2009 16:30
quelle
-2

Ich benutze das ständig:

%Vor%     
user2161700 12.03.2013 15:28
quelle

Tags und Links