我发现如果在这两个程序中用SQL语句对数据库做了修改,数据库在事实上并没有改变,必须要退出这两个程序,所做的更改才会被更新到数据库中去。可是在做修改的那个sql plus或者sqlplus worksheet中,反应出来的现象却是已经对数据库做过修改了。
比如说我先开一个worksheet-1,执行SQL命令清空一张非空表后,再执行select语句,很明显无法获得任何结果。但在不退出这个worksheet的情况下再开一个worksheet-2,执行select发现那张在worksheet-1中被清空的表的内容并没有发生任何变化。于是我猜想,是不是在登录时这两个程序都会创建一个数据库的副本,用SQL命令修改数据库实际上只是在对副本进行修改。可是实验了一下又发现,如果数据库在这两个程序运行着的时候改变了,这两个程序对数据库的“认识”也会随之更新。比如在运行了workshet后,我通过其他途径让某张表被清空,那么用刚刚打开的worksheet对这张表执行delete from table;语句,又会提示删除0行这是怎么一个状况我们在这两个程序中执行SQL命令,这两个程序到底是通过一个什么流程把命令转变为数据库在事实上的更新的?有点绕,不知道我说清楚没有= =