【问题标题】:Oracle AUTO COMMIT甲骨文自动提交
【发布时间】:2014-01-03 20:52:25
【问题描述】:

可以帮助我自动提交以下语句。在 Oracle 中如何使用 Commit 语句来避免自动提交确认对话框?

TRUNCATE TABLE manual_list_backup; 

INSERT INTO manual_list_backup 
SELECT * 
FROM   manual_transactions 

我正在 TOAD 数据点中执行上述语句。每次运行此语句时,我都会看到对话框说

您对“我的架构名称”有未提交的更改。你想提交他们吗?

除非我对这个对话框说“是”,否则上述语句不会产生任何结果

【问题讨论】:

  • 自动提交是一个客户端功能。你用什么客户端?
  • 作为一般规则,在大多数(全部?)关系 DBMS 中,您不能将事务用于 DDL 语句,如 TRUNCATE TABLE。除此之外,Oracle 服务器显然不会显示对话——你的问题是关于什么程序?
  • 我正在 TOAD 数据点中执行上述语句。每次运行此语句时,我都会在对话框中显示“您对'我的模式名称'有未提交的更改。是否要提交它们”。除非我对此对话框说“是”,否则上述语句不会产生任何结果。
  • @santhosha - 以后请编辑您的问题以包含更多信息。注释用于临时或无关的注释。应该可以从一个线程中删除所有 cmets 而不会减少其中的有用信息。
  • @ÁlvaroG.Vicario:我会反过来说:Oracle 是少数支持事务性 DDL 的公司之一。 Postgres、SQL Server、Firebird 和 DB2 支持事务 DDL。在 Postgres 和 SQL Server 中,您可以回滚 truncate(不确定其他)

标签: sql oracle toad


【解决方案1】:

"。每次运行此语句时,我都会看到对话框说 “您对“我的架构名称”有未提交的更改。您要 提交他们“。”

所以你真正抱怨的是TOAD 的一个功能。因为 Oracle 将非常简单地为任何 DDL 语句执行隐式 COMMIT。您的问题是 TOAD 正在干扰默认的 Oracle 行为,并带有其斥责对话框。

这种保姆式的语气是我如此不喜欢 IDE 的原因之一。他们通常很圆滑,乐于助人,但有时他们只需要让开,让我们继续工作。

我已经很久没有使用 TOAD(太贵了),但应该有办法关闭这个对话。对话框本身是否有复选框? 总是显示此消息? 或者,View | Toad Options 菜单中可能有一些内容,可能在Oracle | Transactions 下。 TOAD 等复杂的 IDE 是高度可定制的。

【讨论】:

  • 非常感谢。正如你所建议的,有一个选项可以启用自动提交。这现在解决了我的问题。再次感谢大家的支持。
【解决方案2】:

您不能回滚 TRUNCATE 语句。

操作无法回滚,也不会触发任何触发器。因此,TRUNCATE 速度更快,并且不像 DELETE 那样使​​用太多的撤消空间。

【讨论】:

  • 感谢您的回答。还有其他方法可以实现吗?
  • @santhosha - 实现什么?您希望能够回滚TRUNCATE TABLE 语句吗?是什么阻止您使用DELETE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多