全局临时表中的数据持续时间?

时间:2011-02-16 14:30:15

标签: sql oracle

有人可以告诉我:全球临时表中的数据有多长时间?

3 个答案:

答案 0 :(得分:27)

它们可以基于SESSION(数据在提交时幸存,但不能断开连接/重新连接)。它们也可以基于TRANSACTION(数据在提交后消失)。

这将创建一个基于事务的临时表:

create global temporary table temp_table_transaction on commit delete rows ...

这将创建一个基于会话的临时表:

create global temporary table temp_table_transaction on commit preserve rows ...

答案 1 :(得分:14)

创建temporary table时,您有two options数据持久性:

  • ON COMMIT DELETE ROWS(默认)和
  • ON COMMIT PRESERVE ROWS

如果未指定持久性子句或指定ON COMMIT DELETE ROWS,则表中的数据将特定于事务(在提交或回滚时将被删除)。

如果您指定ON COMMIT PRESERVE ROWS,数据将一直保留到会话结束。

答案 2 :(得分:5)

如果使用“on commit preserve rows”创建表,则数据将保留到当前会话结束。如果它是使用“on commit delete rows”创建的,那么它将一直保留到下一次提交或回滚。