【问题标题】:How to duplicate a table with constraints, indexes, etc. in APEX?如何在 APEX 中复制具有约束、索引等的表?
【发布时间】:2014-11-13 21:49:23
【问题描述】:

我有一个表,我想复制它,但表名不同。我需要复制数据、索引、约束。如何仅在 APEX 内完成?

【问题讨论】:

  • SQL 查询对您有用吗?如果是,则复制旧表的元数据,替换表名并从元数据中执行新的查询。
  • 有 SQL 研讨会 -> SQL 命令,我想可以在其中编写查询。我可以试一试。
  • 查看表的SQL元数据,我看到有关联触发器和序列。我认为这会起作用,但有没有更好的方法,以防表有更多这样的依赖关系?
  • 检查我的答案。你可能需要调整它需要执行的方式,我没有 APEX 来测试。

标签: oracle oracle-apex


【解决方案1】:

您可以生成 DDL 文件。如果需要处理多个表,特别有效

在 Apex 中转到 SQL Workshop > Utilities > Generate DDL > create script

选择架构。

选择所需的对象(表格、触发器等)

接下来选择对象名称(表名、触发器名等)

另见Using Oracle Application Express Utilities

【讨论】:

    【解决方案2】:

    在 SQL 研讨会上试试这个。你可能需要调整它的执行方式,我没有 APEX 来测试它。

    执行 DBMS_METADATA.SET_TRANSFORM_PARAM (DBMS_METADATA.SESSION_TRANSFORM,'PRETTY',TRUE); 执行 DBMS_METADATA.SET_TRANSFORM_PARAM (DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',FALSE); 执行 DBMS_METADATA.SET_TRANSFORM_PARAM (DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',false); 截断表计划表; 说明 SELECT * FROM 的计划; SELECT DBMS_METADATA.GET_DDL(object_type、object_name、object_owner) FROM 计划表 WHERE object_type IN ('TABLE','VIEW'); SELECT DBMS_METADATA.GET_DDL ('INDEX', index_name, index_owner) FROM all_indexes WHERE table_owner, table_name IN ( 选择对象所有者,对象名称 FROM 计划表 p WHERE object_type IN ('TABLE') );

    编辑代替<your table>,输入表名。

    【讨论】:

    • 代替什么?你能举个例子来说明如何使用它吗?它会处理与该表关联的触发器和序列吗?
    • 糟糕,抱歉,刚刚编辑过。该代码用于传递参数以获取元数据,如表、索引等。
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-31
    • 2023-04-04
    • 2013-05-21
    • 1970-01-01
    相关资源
    最近更新 更多