Изменение порядка столбцов в таблице Oracle
Oracle позволяет только добавлять столбцы в конец существующей таблицы.
Как правило это не является проблемой. С помощью SQL можно извлечь столбцы в любом порядке.
Если возникла потребность добавить столбец в таблицу в определенном порядке или поменять местами столбцы, то есть несколько способов:
1. Через создание промежуточной таблицы с переименование. После пересоздать все индексы и констрейны.
2. Сделать VIEW
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); 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
Источники
http://www.dba-oracle.com/t_change_column_order_within_oracle_table.htm
http://www.orafaq.com/wiki/SQL_FAQ#How_does_one_add_a_column_to_the_middle_of_a_table.3F
http://www.locksnlatches.blogspot.ru/2010/07/change-column-position.html