A. plsql中oracle的update语句不提交是不是就更新无效了
如果你不提交,么就仅仅是对当前session的内存中的数据进行的修改,当这个session断开,那么表内的数据没有修改,但是会一直占用内存。rollback和这个不同,rollback相当于也回复了内存中的数据,将内存中修改后的数据用保存在回滚段的数据进行替换,这样就算是当前的session也不会查到你修改后的数据。
B. 在pl/sql里运行数据修改语句后,既不提交也不回滚,数据是什么状态呢
在你执行SQL语句时,这些数据应该会上锁,执行成功后会自动解锁,别人才能对这些数据进行操作
C. 如何取消SQL语句的自动提交
英语界面:Tools -> Preferences -> Window Types -> SQL Window:勾选“AutoCommit SQL”,
中文是:工具-> 首选项 -> 窗口类型 -> SQL窗口 -> 勾选“自动提交sql”
D. SQL语句中,对一张表执行update,但未commit 会影响insert这张表么
不会,但是这两步都没有commit,同时,你第一次update的数据没有提交,如果第二次插入的数据跟第一次插入的数据有冲突也插入不了(如果存在一些唯一性约束或者是主键约束的)
E. 在mysql客户端可不可以让执行一条insert语句的时候不自动提交啊
sql="begin";
开启事务
开启后不执行提交事务就不会被执行,也就不会insert
sql="insert ..."
sql="conmit";
提交事务
sql="rollback"
回滚---取消insert
F. sql语句什么时候用commit,为什么有时候不用commit也可以执行啊
可以执行,但是不提交数据不会保存到数据库
DML需要提交(insert、update、delete)
DDL会自动提交(create、alter ...)
G. 如何查出长时间没有提交事务的sql执行语句
select s.sid,s.serial# ,ss.sql_text from v$session s ,v$sql ss where s.PREV_HASH_VALUE !=0 and s.SQL_HASH_VALUE=0 and s.PREV_HASH_VALUE=ss.hash_value and (ss.sql_text like '%insert%') order by s.sid,s.serial#;
会话长时间不提交,如果要对数据库那张表做ddl维护操作,那就比较困难了.会话长时间不提交,通常是因为事务设计的不合理造成的. 注:把上面的语句改一下,也可以查询update,与delete的sql语句
H. sqlyog8.0 设置事务不自动提交
我的第一感觉是,事务没有提交!
后面发现,原来PL/SQL Developer 默认是不会自动提交事务的!
那自能手动提交或者设置成自动提交事务!
打开PL/SQL Developer,
英语界面:Tools -> Preferences -> Window Types -> SQL Window:勾选“AutoCommit SQL”,
中文是:工具-> 首选项 -> 窗口类型 -> SQL窗口 -> 勾选“自动提交sql”
最后点击确定,即可实现自动提交操作
退出登录自动提交
英文:Tools -> Preferences -> Oracle -> Connection -> Log off with open transaction:选择“Commit”。
中文:工具-> 首选项 ->Oracle -> 注销(有打开的事务) -> 选择提交
现在,无论是执行sql,还是注销用户,都会自动提交事务啦
I. oracle中sqlplus下执行sql语句,是不是只要没有commit就没有把实际修改结果存入数据库啊
在一个用户下update了表,但没有commit的时候,
用另一个用户登录查看该表应该是没有修改前的
注意上面写的,用另一个用户登录
估计你是update后,直接又运行select了吧
在同一个窗口,运行的sql是属于同一个事务的,所以虽然没有提交,但是看见了也是改后的数据。
J. Oracle数据库执行了delete语句,但没有提交,这是页面已经关闭了,怎么找回
一般情况下,若页面关闭了,session就断开了,SQL语句会自动提交,你的delete被执行了
所以,数据是无法找回了(若有日志,可通过日志恢复,若是单条数据,手工insert一条也是可以的)