Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie füge ich eine Spalte an einer bestimmten Position in Oracle ein, ohne die Tabelle zu löschen und neu zu erstellen?

Amit-

Ich glaube nicht, dass Sie irgendwo eine Spalte hinzufügen können, außer am Ende der Tabelle, sobald die Tabelle erstellt wurde. Eine Lösung könnte sein, Folgendes zu versuchen:

CREATE TABLE MY_TEMP_TABLE AS
SELECT *
FROM TABLE_TO_CHANGE;

Löschen Sie die Tabelle, der Sie Spalten hinzufügen möchten:

DROP TABLE TABLE_TO_CHANGE;

An diesem Punkt könnten Sie die vorhandene Tabelle von Grund auf neu erstellen und die gewünschten Spalten hinzufügen. Nehmen wir an, Sie möchten für diese Übung die Spalten "COL2 und COL3" hinzufügen.

Fügen Sie nun die Daten wieder in die neue Tabelle ein:

INSERT INTO TABLE_TO_CHANGE (COL1, COL2, COL3, COL4) 
SELECT COL1, 'Foo', 'Bar', COL4
FROM MY_TEMP_TABLE;

Wenn die Daten in Ihre "neue alte" Tabelle eingefügt werden, können Sie die temporäre Tabelle löschen.

DROP TABLE MY_TEMP_TABLE;

Dies mache ich oft, wenn ich Spalten an einer bestimmten Stelle hinzufügen möchte. Wenn es sich um ein Online-Produktionssystem handelt, ist es offensichtlich nicht praktikabel, sondern nur eine mögliche Idee.

-CJ