今天在用pl/sql测试程序时,出现了如下问题:
首先在PL/SQL中更新了一条记录某一个字段的信息(update语句),然后自己的程序中也更新这条记录,此时出现了程序卡死的现象。如果自己的程序更新没有经过Pl/SQL更新的记录,则没有此问题的发生。
由此分析是数据库update的问题。网上查到如果更新了一条记录而没有commit,其他程序在更新这条数据时就会卡死。这种现象就类似于两个程序同时写一块内存一样,一个程序写了内存只是存在缓存中,没有提交到内存中。但系统已经将这块内存锁死,所以其他程序试图写这块内存时就卡住了,类似于死锁。
知道了问题原因之后,在Pl/SQL更新数据之后提交。程序再更新这条记录就没有问题了。