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

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

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

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

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

  1. create table newtab #b1b100;">as
  2. select col3, col2, col1 from tab;
  3. rename tab to oldtab;
  4. rename newtab to tab;
  5.  

2. Сделать VIEW

  1. CREATE VIEW tab1 #b1b100;">AS SElECT col2 #b1b100;">AS col1, col1 #b1b100;">AS col2 FROM tab
  2.  

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

  1. create table tab1(col1 char,col3 number);
  2. alter table tab1 add(col2 char);
  3. create table tab2 #b1b100;">as select col1,col2,col3 from tab1;
  4. dbms_redefinition.can_redef_table('schema_name','tab1');
  5. begin
  6. dbms_redefinition.start_redef_table('schema_name','tab1','tab2','col1,col2,col3');
  7. dbms_redefinition.finish_redef_table( 'schema_name', 'tab1', 'tab2' );
  8. end;
  9. select * from tab1; -- результат col1 col2 col3
  10.  
10:40
4.71K
Нет комментариев. Ваш будет первым!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.