Изменение порядка столбцов в таблице Oracle

Oracle позволяет только добавлять столбцы в конец существующей таблицы.

Как правило это не является проблемой. С помощью SQL можно извлечь столбцы в любом порядке.

Если возникла потребность добавить столбец в таблицу в определенном порядке или поменять местами столбцы, то есть несколько способов:

1. Через создание промежуточной таблицы с переименование. После пересоздать все индексы и констрейны.

create table newtab as
select col3, col2, col1 from tab;
rename tab to oldtab;
rename newtab to tab;

2. Сделать VIEW

CREATE VIEW tab1 AS SElECT col2 AS col1, col1 AS col2 FROM tab

3. Через пакет DBMS_REDEFINITION

Нужны следующие привилегии:
# execute access on the dbms_redefinition package
# create any table # alter any table
# drop any table
# lock any table
# select any table

create table tab1(col1 char,col3 number); 
alter table tab1 add(col2 char); 
create table tab2 as select col1,col2,col3 from tab1; 
dbms_redefinition.can_redef_table('schema_name','tab1'); 
begin 
dbms_redefinition.start_redef_table('schema_name','tab1','tab2','col1,col2,col3'); 
dbms_redefinition.finish_redef_table( 'schema_name', 'tab1', 'tab2' ); 
end; 
select * from tab1; -- результат col1 col2 col3
10:40
882
Нет комментариев. Ваш будет первым!
Загрузка...