修改全局临时表上的表(保留删除)
问题描述:
是否可以将Oracle中的全局临时表从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,并且不包括改变它的能力。不能改变这一点并没有明确列出,只是指其他类型的表所允许的内容。
您必须使用新的on commit
子句删除并重新创建该表。
Tom Kyte对此way back in 2003发表了简洁的评论。
(我推测,这可能与该语句table locks are not acquired on temporary tables.;虽然它是如何让你添加列而没有作为一个问题是有趣的改变,同时保存会话已在GTT数据可能有奇副作用反正...)
答
根据步骤7本实施例/文章:
- 你不能改变临时表来改变其数据的持续时间。
- 你必须下降并创建它。
http://oracle-plsql-tech.blogspot.com.tr/2013/03/temporary-tables.html
如果你的情况是一样的。
答
您使用的语法是错误的。尝试使用PL/SQL alter table语法。
谢谢。更改为使用不同名称的表格,然后在不再使用时删除另一个表格,这对我来说是一个可行的选择。 – AHungerArtist