DB2 SEQUENCE 序列的问题

最近数据库迁移,菜单插入系统报错!

During SQL processing it returned:SQL0204N "ZX.SEQ_USYS" is an undefined name. SQLSTATE=42704

原因:

   表里面插入数据的简便sql: insert into menu(menu_id,menu_name) values(seq_usys.nextval,"菜单名称") 

查询发现原来seq_usys是序列

查询:select seq_usys.nextval from sysibm.sysdummy1   发现新的数据库没有这个创建序列

下面是关于序列的一些东西(注意->以下内容是转载):

1、创建索引的时候,最好不要加双引号,比如:
db2 ==> CREATE SEQUENCE "seq_test" ...
应该改为:
db2 ==> CREATE SEQUENCE seq_test ...
加了双引号,表示大小写敏感,如果你使用以下语句去查找序列的话,则会报错:
db2 ==> select (nextval for seq_test) from sysibm.sysdummy1;

SQL0204N  "XXX.SEQ_TEST" is an undefined name.  SQLSTATE=42704
2、select nextval for seq_test from sysibm.syssequences 会列出CACHE缓存中的所有值,获取一个值应该使用:
select (nextval for seq_test) from sysibm.sysdummy1;
或者
select (next value for seq_test) from sysibm.sysdummy1;
3、序列设置开始值

 DB2:ALTER SEQUENCE 序列名  RESTART WITH 下一值

4、修改 
 修改最大值:   ALTER SEQUENCE MAX VALUE | NO MAXVALUE 
 修改最小值:   ALTER SEQUENCE MIN VALUE | NO MINVALUE (此值需要比当前值小) 
 修改步长:    ALTER SEQUENCE INCREMENT BY ;
 修改CACHE值: ALTER SEQUENCE CACHE | NO CACHE 
 修改循环属性: ALTER SEQUENCE
 修改排序属性:ALTER SEQUENCE
 从新计数:    ALTER SEQUENCE RESTART | RESTART WITH

5、

(1) 查询SEQUENCE 下一个值

   nextval for SEQUENCE名称

   如果想直接查看 ,可以使用 values() ,比如 values( nextval for SEQUENCE名称)

  (2) 查询SEQUENCE当前值

     prevval for SEQUENCE名称

      注意:  nextval  和 prevval 可以使用在select,values,insert,和update语句中,不能使用在where语句中

6、DROP:    DROP SEQUENCE ;

你可能感兴趣的:(db2)