AxlHammer Geschrieben 29. November 2002 Teilen Geschrieben 29. November 2002 Hallo! Weiss jemand von Euch, ob es möglich ist, bei Oracle 8i den Spaltenname einer Tabelle zu ändern (ich mein jetzt natürlich direkt, nicht nach dem Motto: neue Spalte erstellen, Daten übertragen, alte Spalte löschen), auch wenn Daten dort vorhanden sind? Bis denn, Axl Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
shad0w Geschrieben 29. November 2002 Teilen Geschrieben 29. November 2002 afaik geht das net. geht nur mit drop/add ... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
S.Kremer Geschrieben 5. Dezember 2002 Teilen Geschrieben 5. Dezember 2002 Moin, doch geht: ALTER TABLE tabelle RENAME TO neuer_name zB ein Table-Datenbackup im direkten Syntax: RENAME TABLE alte_tabelle TO datensicherung_tabelle, neue_tabelle TO alte_tabelle; oder von zwei verschiedenen Datenbanken auf einer Platte: RENAME TABLE aktuelle_datenbank.tabelle TO andere_datenbank.tabelle; den rest kann man sich *afaik* denken so long Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hades Geschrieben 5. Dezember 2002 Teilen Geschrieben 5. Dezember 2002 Originally posted by S.Kremer Moin, doch geht ... Ja, aber... Deine Codebeispiele nennen den Tabellennamen um. Hier ging es um Feld- bzw. Spaltennamen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
S.Kremer Geschrieben 5. Dezember 2002 Teilen Geschrieben 5. Dezember 2002 Oh ha! Wer lesen kann ist klar im Vorteil :bimei Orcale bietet hierfuer leider keinen direkten Weg, solltest du DBA Rechte haben oder die Moeglichkeit daran zu kommen, try this (ist aber mit Vorsicht zu geniesen): update SYS.COL$ col set col.NAME = 'neuer_name' where col.NAME = 'alter_name' and col.OBJ# in ( select ob.OBJ# from SYS.OBJ$ ob, SYS.USER$ us where ob.OWNER# = us.USER# and us.NAME = 'besitzername' and ob.NAME = 'alter_name' ); Wichtig: Alle Namen müssen in Grossbuchstaben angegeben werden! Besitzername ist der Name des Besitzers der Tabelle. Anonsten rate ich zu einer schonenderen Variante ala: 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. 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 ...) Ich hoffe es hilft so long Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.