Oracle отбрасывает и воссоздает синонимы - PullRequest
0 голосов
/ 20 октября 2011

Когда мы используем CTAS следующим образом:

create table big2 as select * from big1; 
drop table big1;
rename big2 to big1;

Если на big1 существует синоним, нужно ли удалять синоним на big1 перед их удалением и повторным созданием?Или это не обязательно?

1 Ответ

1 голос
/ 20 октября 2011

Нет. Becuase Synonym - это просто другое имя, которое вы даете объекту (либо в вашей схеме, либо нет). См. Этот код ниже.

(Кстати, не следует ли вам переименовать таблицу t2 в t1 напрямую? Есть ли в вашем CTAS другие условия, которые вы здесь не показываете?)

SQL> create table t1 as
  2  select * from scott.emp;

Table created.

SQL> select count(*) from t1;

  COUNT(*)
----------
        14

SQL> select count(*) from t2;
select count(*) from t2
                     *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> create synonym s1 for t1;

Synonym created.

SQL> create table t2 as
  2  select * from t1;

Table created.

SQL> drop table t1;

Table dropped.

SQL> alter table t2 rename to t1;

Table altered.

SQL> select count(*) from t1;

  COUNT(*)
----------
        14

SQL> select count(*) from s1;

  COUNT(*)
----------
        14
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...