坑爹的commit
初学oracle,在摸索中前进。
oracle中真的有很多细节需要注意,就像我今天下午遇到的两个问题:
1.同一条语句,在两个不同的窗体执行显示不同的结果,郁闷死了,明明有一个结果是错误的(这个错误是通过肉眼对表内数据的判断得出的),但是多次执行,还是这个错误,最后请教高数,一听问题,立刻给出结果:“肯定在执行insert/delete/update时,没有commit”,看来做这一行,多练习是一方面,经验同样很重要。
2.一个存储过程执行报错“找不到数据”,但是表中肯定有这条数据,然后群上请教大家,大家给出了几种可能,尝试无果,后来一网友说,这个过程在我电脑上执行正确,没问题的。蒙了...最后主句调试,一一排查,insert语句没有执行commit,无数据提交!
本来一挺简单的问题,自己却找不到错误在哪,从各方面排查、调试,甚至有些恼怒(执行结果不一那个错误),最后找出症结,原来是一个较小却非常严重的错误"commit”,真是哭笑不得~~
希望朋友们引以为戒,在执行insert、delete、update等一类DML语句时,记得提交事务,使事务中执行的变更永久化,所有事务的更改都将为其他事务可见。