oracle中sqlplus下执行sql语句,是不是只要没有commit就没有把实际修改结果存入数据库啊?

按理说(书上说的),如果我在一个用户下update了表,但没有commit的时候,用另一个用户登录查看该表应该是没有修改前的。但是我试了一下,怎么和书说的不一样呢,看见的是改后的。哦,我装的是11g版本。

在一个用户下update了表,但没有commit的时候,
用另一个用户登录查看该表应该是没有修改前的

注意上面写的,用另一个用户登录
估计你是update后,直接又运行select了吧
在同一个窗口,运行的sql是属于同一个事务的,所以虽然没有提交,但是看见了也是改后的数据。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-23
没有commit就是没有 提交当前的修改 看到的是修改前的结果
我用的9i

oracle中sqlplus下执行sql语句,是不是只要没有commit就没有把实际修改...
在一个用户下update了表,但没有commit的时候,用另一个用户登录查看该表应该是没有修改前的 注意上面写的,用另一个用户登录 估计你是update后,直接又运行select了吧 在同一个窗口,运行的sql是属于同一个事务的,所以虽然没有提交,但是看见了也是改后的数据。

oracle的sqlplus怎样保存修改的数据?
oracle中执行了insert、update、delete这三个DML语句后,结果在未提交前实际上是保存在undo空间内,只有提交之后,才会真正写入到表中。所以会发生你的问题。提交语句:commit 另外,在未做提交前,其他人是无法select到你处理的数据的,看到的是未处理前的数据。还有一点要说明,当你执行了update、delete时...

为什么ORACLE中,用SQL语句插入一条记录后,找不到该记录
oracle插入记录后必须commit,如果你insert之时的sqlplus客户端没有退出,也就是说session没发生改变,你即使没有commit也可以看到你insert的记录,数据库中这样读到的数据叫“脏读”。一旦session发生改变,没有commit的insert的记录是看不到的。没有commit的DML的记录被oracle放到回滚段或者UNDO表空间里,等...

【Oracle】SQLPLUS命令---1
SQL语句与SQL*PLUS命令的差异在于执行后是否保存于SQL buffer,前者仅保存最后一条,且可修改再执行,后者不保存,用于结果格式化显示。SQL*PLUS启动与连接方式包括启动监听、数据库、连接数据库、使用命令退出等。命令行如需启动数据库监听:lsnrctl start;启动数据库:sqlplus \/nolog、sqlplus \/ as sysdba...

Oracle数据库sql语句
delete ,update)之后,一定要使用commit或rollback命令来结束该事务,否则直接关闭SQL Plus,数据库默认rollback之前未提交的事务,所以今天你在select的时候 会显示未选定行。而手动输入commit,rollback 这类的命令,是显示的提交事务(完成事务)。如果在DML操作之后未及时显示的提交,而是又进行了DDL操作...

在Oracle中,commit这个关键字有什么作用?在sql语句中,运行程序结果没什 ...
commit是提交修改,其实是触发checkpoint,Oracle进程中有chkp进程(是不是这4个字母忘记了),当checkpoint即检查点触发后,会由数据写进程将内存中数据的改动写入磁盘,形成永久更改。当然其实如果你做了修改又没有commit并不一定会丢失数据,这里面又牵扯到日志,回滚数据等等,,总之你对表数据做了修改...

oracle删除表中全部数据的问题
1、oracle 如果使用同一个终端,比如sql*plus ,如果进行了 delete 操作,但是没有commit; 那么在同一个终端是可以看到delete 已经被操作的结果。 但是其他的终端却看不到这个执行结果。就像jdbc 仍然能够查询到数据。2、你把 sql*plus 重启之后 就不是以前那个终端了。所以就又不能看到以前操作的结果...

oracle 命令窗口中语句不执行,只返回行号
sqlplus 下结束语句的方法有几个,一是查询之类的,输入分号后系统自动执行语句并返回结果,二是输入“\/”,意思就是执行。三是输入“go”,意思当然也是执行。如果要退出command窗口可以输入exit,回车。你的存储过程当然有错了,你只申明了两个变量,还没有为变量赋值,调用的时候传入的参数是默认值,...

sqlplus连接oracle后执行语句,结果都是2??
Oracle中的sqlplus可以执行sql语句。执行步骤如下:1、首先要使电脑的oracle的服务和监听处于开启状态,如图:2、win键+R键,然后输入cmd,打开命令提示符:3、命令提示符中输入“sqlplus 用户名\/密码@实例名”(不含引号):4 、输入要执行的语句,如“select from test;”(不含引号,但分号不能省略...

oracle使用sqlplus使用查询语句没有用,怎么回事?
这个关系到各个数据库中命令的结束标记。oracle中是用分号,mysql也是,sybase则是用go做为触发命令的依据。你图中select之所以没有结果,而出现2,正是因为没有加上分号,而让oracle以为你只是想换一行继续输入命令。

相似回答
大家正在搜