DB2 SEQUENCE RESTART 绑定 包

今天在程序中用到了DB2的SEQUENCE,总结一下其中的心得体会。

1、命令行取sequence soc.nico_qian的下一个值:
 db2 "values next value for soc.nico_qian"
2、命令行重置sequence soc.nico_qian:
 db2 "alter sequence soc.nico_qian restart",重置后的值默认为创建SEQUENCE时的MINVALUE
3、命令行以指定值22重置sequence soc.nico_qian:
 db2 "alter sequence soc.nico_qian restart with 22"
4、命令行重置表KS.CHECK_CONDITION的IDENTITY字段初始值为20:
 db2 "ALTER TABLE KS.CHECK_CONDITION ALTER COLUMN identity RESTART WITH 20"
5、如果sequence被以命令行的方式重置,那么用到这个sequence的嵌入式C程序代码的绑定包
   的VALID字段会被修改为N,那么在下一次这个代码被调用的时候,DB2会自动重新绑定
   此代码的绑定包,这个动作会给应用程序带来不可预知的后果,比如:如果这段代码是在很
   频繁的被用到的时间段内被重新绑定,那么极易造成死锁。
   同样的问题会出现在IDENTITY字段上。


   但是如果sequence是到了MAXVALUE而自动重新回到最小值则无此问题。
   而IDENTITY则无论是以命令行方式重置还是在程序中到了MAXVALUE后自动回转均会有此问题。


 绑定包目前的有效性和最后一次绑定时间可在SYSCAT.PACKAGES中来查看:
 VALID和LAST_BIND_TIME字段,通过PKGNAME字段来定位

posted @ 2010-09-18 23:00  nicolas郭  阅读(1321)  评论(0编辑  收藏  举报