Есть ли более простой способ поменять имена столбцов друг с другом в одной таблице? - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно найти способ поменять имена двух столбцов друг с другом в таблице Oracle.

Один из способов сделать это можно было бы сделать так:

ALTER TABLE SCHEMANAME.TABLENAME
RENAME COLUMN FIRST TO X;

ALTER TABLE SCHEMANAME.TABLENAME
RENAME COLUMN SECOND TO Y;

ALTER TABLE SCHEMANAME.TABLENAME
RENAME COLUMN X TO SECOND;

ALTER TABLE SCHEMANAME.TABLENAME
RENAME COLUMN Y TO FIRST;

Есть ли проще?способ сделать это?

1 Ответ

0 голосов
/ 20 сентября 2018

Для http://www.dba -oracle.com / t_change_column_order_within_oracle_table.htm вы не можете.

Порядок хранения столбцов в блоках данных можно изменить, но этоакадемическое упражнение, потому что не имеет никакого значения

Это то же самое, что и для переменных , но вы не можете использовать своп XORтехника ;)

Это должно быть 3 утверждения:

ALTER TABLE SCHEMANAME.TABLENAME RENAME COLUMN FIRST TO SWAPING_COL ;

ALTER TABLE SCHEMANAME.TABLENAME RENAME COLUMN SECOND TO FIRST ;

ALTER TABLE SCHEMANAME.TABLENAME RENAME COLUMN SWAPING_COL TO FIRST ;

Другое решение - создать новую таблицу с нужным вам порядком:

create table newtab
as   select SECOND, FIRST from SCHEMANAME.TABLENAME ;

  rename SCHEMANAME.TABLENAME  to TABLENAMEoldtab ; -- or drop it
  rename newtab to SCHEMANAME.TABLENAME ;
...