Oracle中的临时表创建

Oracle中的临时表创建,oracle,temp-tables,Oracle,Temp Tables,有没有办法在Oracle中创建一个临时表,一旦模式连接关闭,它就会自动删除?本地临时表的工作方式类似吗?您可以在oracle中创建一次临时表,而不是每次会话。但是,插入其中的行仅对会话可见,并且在会话结束或事务结束时自动删除 我认为解决您问题的方法是使用GTT() 它们将允许您在其中存储每个会话都可用的临时数据 CREATE GLOBAL TEMPORARY TABLE my_temp_table ( id NUMBER, description VARCHAR2(

有没有办法在Oracle中创建一个临时表,一旦模式连接关闭,它就会自动删除?本地临时表的工作方式类似吗?

您可以在oracle中创建一次临时表,而不是每次会话。但是,插入其中的行仅对会话可见,并且在会话结束或事务结束时自动删除

我认为解决您问题的方法是使用GTT()

它们将允许您在其中存储每个会话都可用的临时数据

CREATE GLOBAL TEMPORARY TABLE my_temp_table (
  id           NUMBER,
  description  VARCHAR2(20)
)
此外,可以通过在提交-删除行上指定
来删除此数据选项,如:

CREATE GLOBAL TEMPORARY TABLE my_temp_table (
  id           NUMBER,
  description  VARCHAR2(20)
)
ON COMMIT DELETE ROWS;
如网站所述:

提交删除行时的
子句指示应在事务结束或会话结束时删除数据


您还可以查看。

Oracle中没有
本地临时表。不,没有自动删除的临时表。但是你为什么需要这个?谢谢你提供的信息!我一直在Teradata工作,在那里我有一个选项Volatile table,一旦会话结束就会自动删除它。如果我想在短时间内保存数据,并在工作完成后将其删除,那么Volatile tables会有很大帮助。在大多数情况下,您并不需要Oracle中的临时表。使用CTE通常也同样有效。