Alter table on global temporary table (保留删除)

Alter table on global temporary table (preserve to delete)

是否可以将 Oracle 中的全局临时 table 从 PRESERVE ROWS 更改为 DELETE ROWS?

我尝试了以下命令,但出现语法错误。如果可能的话,正确的语法是什么?

ALTER TABLE BLOCKING_RESULTS ON COMMIT DELETE ROWS

SQL Error: ORA-01735: invalid ALTER TABLE option 01735. 00000 - "invalid ALTER TABLE option"

这是不可能的。 The valid syntax is documented, and doesn't include the ability to change this. Not being able to change this isn't listed explicitly as one of the restrictions for GTTs,但这仅指其他类型 table.

允许的事情

您必须使用新的 on commit 子句删除并重新创建 table。

Tom Kyte 对此做出了简洁的评论way back in 2003

(我 推测 它可能与 table locks are not acquired on temporary tables. 的陈述有关;尽管它如何让您添加列而不成为问题很有趣。当会话在 GTT 中有数据时改变保存可能会产生奇怪的副作用...)

根据这个example/article在第7步:

-您不能更改临时 table 来更改其数据持续时间。

-您必须删除并重新创建它。

http://oracle-plsql-tech.blogspot.com.tr/2013/03/temporary-tables.html

如果你的情况相同。

您使用的语法错误。尝试 PL/SQL 改变 table 语法。