【发布时间】:2015-02-04 08:01:22
【问题描述】:
如何在没有 DDL 提交事务的情况下在 Oracle db (CREATE GLOBAL TEMPORARY TABLE) 中创建临时表?
我想要和 MySQL 一样的行为。来自here:
CREATE TABLE 不会自动提交当前活动的 如果您使用 TEMPORARY 关键字,则进行交易。
【问题讨论】:
-
是的,Oracle 中的 每个 DDL 都会隐式提交。请注意,在 Oracle 中,您通常只创建一个(全局)临时一次。您不会“即时”创建它们。
-
您不需要动态创建对象,表(包括临时表)只能在受控条件下创建——通常是在安装或升级应用程序时。在 Oracle 中真正需要临时表并不常见,它们的使用方式与其他数据库不同。如果您描述了您使用它的目的,我们可能会建议一种合适的方法。
-
永远不要混合 DML 和 DDL - 这是 Oracle 的经验法则。不建议将一个数据库的模式应用于其他数据库。您通常应该在 Oracle 中使用游标或某些复杂类型,而在 MySQL/MSSQL 中使用临时表。在 Oracle 中,当您需要临时表时,您的设计可能有问题。