【发布时间】:2021-03-20 09:27:35
【问题描述】:
谁能告诉我:全局临时表中的数据会存在多长时间?
【问题讨论】:
谁能告诉我:全局临时表中的数据会存在多长时间?
【问题讨论】:
当您创建temporary table 时,您有two options 用于数据持久性:
ON COMMIT DELETE ROWS(默认)和ON COMMIT PRESERVE ROWS如果您不指定持久性子句,或指定ON COMMIT DELETE ROWS,则表中的数据将是特定于事务的(将在提交或回滚时删除)。
如果您指定ON COMMIT PRESERVE ROWS,数据将一直保留到会话结束。
【讨论】:
DECLARE GLOBAL TEMPORARY TABLE 不是一个有效的命令,所以我不确定我是否明白你在这里想说什么。
如果表是使用“提交时保留行”创建的,则数据将保留到当前会话结束。如果它是使用“on commit delete rows”创建的,那么它将一直保留到下一次提交或回滚。
【讨论】:
它们可以基于 SESSION(数据在提交后仍然存在,但在断开/重新连接时不存在)。它们也可以基于 TRANSACTION(提交后数据消失)。
这将创建一个基于事务的临时表:
create global temporary table temp_table_transaction on commit delete rows ...
这将创建一个基于会话的临时表:
create global temporary table temp_table_transaction on commit preserve rows ...
【讨论】: