我需要找到一种在Oracle表中相互交换2个列名的方法。
我可以做到的一种方法是:
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;
是否有更简单的方法来完成此操作?
答案 0 :(得分:0)
对于http://www.dba-oracle.com/t_change_column_order_within_oracle_table.htm,您不能。
可以更改列在数据块上的存储顺序,但这是一项学术练习,因为它没有任何区别
是一样的
代表variables,但不能使用XOR
swap technique ;)
必须为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 ;