首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >甲骨文dbms_redefinition.copy_table_dependents中的dbms_redefinition.copy_table_dependents前缀

甲骨文dbms_redefinition.copy_table_dependents中的dbms_redefinition.copy_table_dependents前缀
EN

Stack Overflow用户
提问于 2014-06-14 12:29:00
回答 1查看 1K关注 0票数 3

ORACLE的dbms_redefinition.copy_table_dependents复制索引/触发器/约束,并将它们重命名为

代码语言:javascript
复制
TMP$$_[original object name]

是否可以更改字符串"TMP$$_“,以便copy_table_dependents使用不同的前缀?我知道事后我可以重命名对象,但我不知道是否可以更改前缀。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-14 16:52:19

不,你不能改变object_name。

我不认为这很重要,因为一旦运行TMP$$DBMS_REDEFINITION.FINISH_REDEF_TABLE对象就会被移除。

如果您假设以下环境

代码语言:javascript
复制
create table test_redef_source ( id number, tstamp date, primary key (id) );

create or replace trigger tr_test_redef_sources
 before insert on test_redef_source
 for each row
begin
  :new.tstamp := sysdate;
end;
/

create table test_redef_int as
select * from test_redef_source;

declare
   l_errors number;
begin
   dbms_redefinition.start_redef_table (
          uname =>  user
        , orig_table => 'TEST_REDEF_SOURCE'
        , int_table => 'TEST_REDEF_INT'
           );
   dbms_redefinition.copy_table_dependents (
          uname => user
        , orig_table => 'TEST_REDEF_SOURCE'
        , int_table => 'TEST_REDEF_INT'
        , copy_indexes => 1
        , num_errors => l_errors
          );
end;
/

通过查询相依性;可以看到TMP$$对象依赖于临时表:

代码语言:javascript
复制
select name, type, referenced_name
  from user_dependencies
 where referenced_name like '%TEST_REDEF%'
       ;

NAME                           TYPE               REFERENCED_NAME
------------------------------ ------------------ --------------------
TMP$$_TR_TEST_REDEF_SOURCES0   TRIGGER            TEST_REDEF_INT
TR_TEST_REDEF_SOURCES          TRIGGER            TEST_REDEF_SOURCE

完成重新定义后,这些对象将被移除:

代码语言:javascript
复制
begin
   dbms_redefinition.finish_redef_table (
          uname => user
        , orig_table => 'TEST_REDEF_SOURCE'
        , int_table => 'TEST_REDEF_INT'
          );
end;
/

PL/SQL procedure successfully completed.

select name, type, referenced_name
  from user_dependencies
 where referenced_name like '%TEST_REDEF%'
       ;

NAME                           TYPE               REFERENCED_NAME
------------------------------ ------------------ --------------------
TR_TEST_REDEF_SOURCES          TRIGGER            TEST_REDEF_SOURCE

因为它们只是临时对象,而且名称保证是唯一的;我不认为维护标准名称有任何特殊的问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24219921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档