在Oracle 11g中创建表时如何保存表?

时间:2017-02-15 06:49:31

标签: oracle11g

我将命令赋予CREATE TABLE并将值插入表中但未保存。下次我登录时,表格在那里,但插入的数据不存在。 “没有选定的行”是屏幕中显示的语句。 请帮助保存ORACLE 11g中的更改。

1 个答案:

答案 0 :(得分:0)

解决方案

首先将Oracle数据库客户端应用程序设置为在终止之前始终隐式提交回滚事务(Oracle的行为recommended)。然后了解数据库transactions,并在自动提交模式中设置Oracle数据库客户端应用程序,或者显式提交D.M.L.事务(使用COMMIT语句),因为您不应该依赖客户端应用程序的提交行为。

数据库事务摘要

数据库事务是数据库管理系统的基本概念。事务的基本属性是 atomicity :事务是

  • 已提交(数据库更改都是永久性的,存储在磁盘上);或
  • 回滚(数据库更改全部被丢弃)。

词汇上,交易由一个或多个S.Q.L组成。这些陈述:

  • 数据定义语言(DDL)语句(CREATEDROPALTERGRANTREVOKE,...)更改数据库的结构;
  • 数据操作语言(DML)语句(INSERTDELETEUPDATESELECT,...),用于检索或更改<数据库的em> contents 。

数据库客户端应用程序可以在两种不同的模式下运行:

  • 自动提交模式,其中隐式事务在D.D.L之前隐式启动。和D.M.L. D.D.L.之后的陈述和隐含的成功承诺并在失败时回滚和D.M.L.语句和显式事务在BEGIN语句处显式启动,并在COMMIT语句处显式提交,并在ROLLBACK语句处回滚;
  • 非自动提交模式,其中混合事务在D.D.L之前隐式启动。或D.M.L.语句并在COMMIT语句处显式提交,并在ROLLBACK语句处回滚。

在这两种模式下,在数据库客户端应用程序正常终止之前隐式提交事务,并在数据库客户端异常终止之前隐式回滚事务。对于不支持回滚D.D.L的数据库管理系统。语句(Maria D.B.,Oracle数据库,S.Q.L。服务器),事务也在D.D.L之后隐式提交。语句。

解释

当您发出CREATE声明时,因为它是D.D.L.声明和Oracle数据库不支持回滚D.D.L.语句,隐式提交创建表的事务。这就是为什么在您开始新会话后表结构仍然存在的原因。但是当你发表INSERT声明时,因为它是D.M.L.语句并且您没有处于自动提交模式,填充表的事务是隐式提交。由于您的Oracle数据库客户端应用程序未设置为在终止之前隐式提交事务,因此在您开始新会话后表内容已经消失。