2015-01-08 2 views
2

В чем разница между инструкцией ALTER TABLE RENAME и оператором RENAME TABLE.Переименовать таблицу Oracle

т.е. между

Alter table old_table_name rename to new_table_name 

и

rename table old_table_name to new_table_name. 
+0

Это может быть ответ на ваш вопрос: http://stackoverflow.com/a/835782/1145053 –

+0

Простой 'rename' будет работать только в одной и той же схеме, где объект существует, в то время как' alter' будет работать и с другой схемой. Конечно, если у вас есть необходимые привилегии для этого. См. Мой ответ. –

+0

Возможный дубликат [Переименовать Oracle Table или View] (http://stackoverflow.com/questions/835387/rename-oracle-table-or-view) – Sathya

ответ

7

переименования таблицы old_table_name в new_table_name.

Этот синтаксис неправильный. не требуется ключевое слово table. Правильный синтаксис -

rename old_table_name to new_table_name;

Теперь, давайте посмотрим, где разница между alter утверждением и простой rename заявлением.

У меня есть две схемы, SCOTT и LALIT.

SQL> SHOW USER 
USER is "SCOTT" 
SQL> 
SQL> create table t(id number); 

Table created. 

SQL> rename t to t_new; 

Table renamed. 

SQL> alter table t_new rename to t_newer; 

Table altered. 

Таким образом, оба утверждения работают в том же schema.

Давайте подключиться к другой схеме -

SQL> SHOW USER 
USER is "LALIT" 
SQL> 
SQL> create table t(id number); 

Table created. 

SQL> rename scott.t_newer to t_newest; 
rename scott.t_newer to t_newest 
     * 
ERROR at line 1: 
ORA-01765: specifying owner's name of the table is not allowed 


SQL> alter table scott.t_newer rename to t_newest; 

Table altered. 

Итак, вы видите ошибку ORA-01765: specifying owner's name of the table is not allowed. Вот где простая инструкция rename не работает на других объектах схемы. Работает только ALTER.

+0

Спасибо, Лалит. обе концепции понятны сейчас. –

+0

Добро пожаловать. Пожалуйста, отметьте это, если у вас есть решение. –

Смежные вопросы