Zmiana nazwy obiektu - RENAME
piątek, październik 26th, 2007Potrzeba zmiany nazwy obiektu wystepuje często. Najczęściej w środowiskach hurtowni danych, gdzie dane przenoszone sa z tablicy do tablicy ( lub z partycji do partycji ). Nazwy obiektów często zmieniane są w środowiskach developerskich i pozostałych podczas instalacji nowych wersji aplikacji.
By spełnić te wymagania Oracle dostarcza komendę RENAME.
Pełna składnia:
rename <stara-nazwa> to <nowa-nazwa>
jednak działa ona tylko dla tablic, widoków , sekwencji i synonimów.
Natomiast dla innych typów obiektów należy użyć komendy ALTER. Składnia jest następujaca:
alter <typ-obiektu> <stara-nazwa> rename to <nowa-nazwa>
Gdzie <typ-obiektu> moze być:
- table
- view
- index
- trigger
- outline
Można zmienić nazwę partycji lub subpartycji tablicy i indexu:
ALTER TABLE <moja-tablica> RENAME PARTITION <stara-nazwa-partycji> TO <nowa-nazwa-partycji>;
ALTER INDEX <moj-index> RENAME PARTITION <stara-nazwa-partycji> TO <nowa-nazwa-partycji>;
ALTER TABLE <moja-tablica> RENAME SUBPARTITION <stara-nazwa-subpartycji> TO <nowa-nazwa-subpartycji>;
ALTER INDEX <moj-index> RENAME SUBPARTITION <stara-nazwa-subpartycji> TO <nowa-nazwa-subpartycji>;
By zmienić nazwę kolumny tablicy:
ALTER TABLE <moja-tablica> RENAME COLUMN <stara-nazwa-kolumny> TO <nowa-nazwa-kolumny>;
Gdy zmieniamy nazwę obiektu, zmieniają się odpowiednio constraint‘y, indexy i triggery bazujące na zmienianej tablicy.
Natomiast obiekty PL/SQL ( pakiety, funkcje, procedury, typy etc.) i widoki zostają zinwalidowane ( INVALID ) i wymagają poprawienia kodu.
ALTER (…) RENAME TO nie można użyć dla wielu typów obiektów. Między innymi:
- function
- procedure
- package [body]
- etc.
Pozostaje usunięcie starego obiektu (DROP) i stworzenie nowego (CREATE).