代码之家  ›  专栏  ›  技术社区  ›  Richard Neil Ilagan

Oracle临时表在这样的存储过程中究竟是如何工作的?

  •  2
  • Richard Neil Ilagan  · 技术社区  · 14 年前

    假设我在存储过程中使用以下Oracle代码:

    CREATE GLOBAL TEMPORARY TABLE temp_table (
        field1 NUMBER,
        field2 NUMBER
    )
    ON COMMIT DELETE ROWS
    

    这个特定的存储过程可以在任何时刻由不同的用户同时调用。据我所知,临时表中对用户可见的数据对他或她来说是私有的,这些行在提交时被删除。

    但是,以下工作是如何进行的:

    1. 每一次

    2. 提交时删除行到底会发生什么?我假设这只会删除特定用户会话的特定行,其他会话的数据不会受到损害,对吗?

    任何帮助都将不胜感激。:)

    2 回复  |  直到 14 年前
        1
  •  5
  •   Guru    14 年前

    问题1:打电话给警察安全吗 在每个语句上方创建语句 调用存储过程的时间?

    创建全局临时表的主要原因( GTT )是创建一次(不是在过程内部)并将其用作会话的私有表。如果表已经存在,它将抛出一个错误。

    问题2:提交时删除行到底会发生什么?

    对。一旦提交,数据就会被删除。这种情况只发生在您操作的会话中。

    检查 creating 以及它的 use .

        2
  •  0
  •   cagcowboy    14 年前
    1. 我就把桌子留在那里。一直放弃和重新创造它是没有意义的。正如你所说,这会引起一致性问题。

    2. 对。