【问题标题】:INSERT ALL INTO a table over a dblink .. Is it possible?INSERT ALL INTO 通过 dblink 插入表 .. 有可能吗?
【发布时间】:2012-01-18 21:25:53
【问题描述】:

当我执行以下操作时:

INSERT ALL INTO table@database_link(columnName) VALUES (columnValue)
SELECT columnValue FROM localTable;

我收到一个错误

SQL 错误:ORA-02021:远程服务器上不允许 DDL 操作 数据库 02021. 00000 - “远程数据库上不允许 DDL 操作” *原因:试图在远程数据库上使用 DDL 操作。 例如,“CREATE TABLE tablename@remotedbname ...”。 *操作:要更改远程数据库结构,您必须连接到 具有适当权限的远程数据库。

请注意,当我执行常规(而不是全部插入)时...插入在数据库链接上工作。 (赠款是有效的)。

两个表上也没有触发器。

我明确需要 INSERT ALL INTO,以便能够插入到多个表中。

数据库链接表中不允许 INSERT ALL INTO 操作吗?

【问题讨论】:

    标签: oracle dblink


    【解决方案1】:

    这条消息有点误导,但无论如何根据the Oracle SQL Reference

    您不能对远程表执行多表插入。

    【讨论】:

    • 是的......绝对是误导。
    【解决方案2】:

    数据库链接表中不允许 INSERT ALL INTO 操作吗?

    很遗憾没有。请注意此列表中的第二项:

    对多表插入的限制

    您只能对表执行多表插入,而不能对视图或 物化视图。

    您不能对远程表执行多表插入。

    在执行 多表插入。

    在多表插入中,所有的 insert_into_clauses 不能组合 指定超过 999 个目标列。

    在真正的应用程序集群中,多表插入不是并行的 环境,或者如果任何目标表是索引组织的,或者如果有的话 目标表上定义了位图索引。

    多表插入语句不支持计划稳定性。

    多表插入语句的子查询不能使用序列。

    来源:Oracle 9i documentation

    【讨论】:

      猜你喜欢
      • 2018-11-13
      • 2015-11-17
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多