1.LOCK TABLE tablename PRATITION interge IN SHARE/EXCULSIVE MODE
2.COBOL调用的子程序中如果有SQL语句的话,在return的时候会自动commit,当然前提是SQLCODE=0。如果SQLCODE<0 则rollback。
~~~~~~~~~Bind package option里RELEASE(COMMIT)的意思是,资源在commit的时候被释放,RELEASE(DEALLOCATE)资源在程序terminate的时候被释放。并不是程序release的时候commit或者deallocate资源之类的意思,囧...
在一个cobol程序中有若干条SQL语句,如果其中一条出错,没关系,其他SQLCODE=0语句还是有效的,没有所谓的rollback保证交易的原子性(如果真那样,DB2也太智能了,不需要在应用里控制交易的原子性),在程序terminate的时候会commit,将无错语句的执行结果写入数据库。
所以,如果你想保证一个交易的原子性,即使这个交易时在一个cobol程序里实现的,那你也需要手动的执行savepoint、commit和rollback操作,切忌。
3.对于savepoint这个东西,不是很理解它的用处,我们期望transaction的consistent,那么为什么要在一个transaction之间打上savepoint呢...
~~~~~~~~~~~~~上面已经解释了,savepoint的一点用处,希望理解是正确的吧。