我将命令赋予CREATE TABLE并将值插入表中但未保存。下次我登录时,表格在那里,但插入的数据不存在。 “没有选定的行”是屏幕中显示的语句。 请帮助保存ORACLE 11g中的更改。
答案 0 :(得分:0)
首先将Oracle数据库客户端应用程序设置为在终止之前始终隐式提交或回滚事务(Oracle的行为recommended)。然后了解数据库transactions,并在自动提交模式中设置Oracle数据库客户端应用程序,或者显式提交D.M.L.事务(使用COMMIT
语句),因为您不应该依赖客户端应用程序的提交行为。
数据库事务是数据库管理系统的基本概念。事务的基本属性是 atomicity :事务是
词汇上,交易由一个或多个S.Q.L组成。这些陈述:
CREATE
,DROP
,ALTER
,GRANT
,REVOKE
,...)更改数据库的结构; INSERT
,DELETE
,UPDATE
,SELECT
,...),用于检索或更改<数据库的em> contents 。数据库客户端应用程序可以在两种不同的模式下运行:
BEGIN
语句处显式启动,并在COMMIT
语句处显式提交,并在ROLLBACK
语句处回滚; 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数据库客户端应用程序未设置为在终止之前隐式提交事务,因此在您开始新会话后表内容已经消失。