用PLSQL给oracle表中新增一条数据,未commit,直接关掉数据库。第二次重启服务,打开数据库查看此表,发现新增的数据依然存在,上网查了一下,众说纷纭,请前辈指教一下commit原理。谢谢
DML语言,比如update,delete,insert等修改表中数据的需要commit;
DDL语言,比如create,drop等改变表结构的,就不需要写commit(因为内部隐藏了commit);
当执行DML命令如果没有提交,将不会被其他会话看到。除非在DML命令之后执行了DDL命令或DCL命令,或用户退出会话,或终止实例,此时系统会自动 发出commit命令,使未提交的DML命令提交。
这样的话个人觉得commit没有什么实质意义。如果一直在同一会话操作调用,然后退出或终止,这样和commit的作用是一样的。
@景#: 反正为了保险起见。还是手动触发下。万一辛辛苦苦弄了半天数据..就没commit而关闭没保存的话。是一个很蛋疼的事情
@g皓皓:哈哈,这倒是真的。