DB2 SEQUENCE 序列的问题

本文解析了数据库迁移过程中菜单插入失败的SQL错误,详细介绍了序列(Sequence)的创建、查询及修改方法,并提供了常见操作的SQL语句,帮助解决数据库迁移时遇到的序列缺失问题。

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

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 <sequence_name> MAX VALUE <numeric-constant> | NO MAXVALUE 
 修改最小值:   ALTER SEQUENCE <sequence_name> MIN VALUE <numeric-constant> | NO MINVALUE (此值需要比当前值小) 
 修改步长:    ALTER SEQUENCE <sequence_name> INCREMENT BY <numeric-constant>;
 修改CACHE值: ALTER SEQUENCE <sequence_name> CACHE <numeric-constant> | NO CACHE 
 修改循环属性: ALTER SEQUENCE <sequence_name> <CYCLE | NO CYCLE>
 修改排序属性:ALTER SEQUENCE <sequence_name> <ORDER | NO ORDER>
 从新计数:    ALTER SEQUENCE <sequence_name> RESTART | RESTART WITH <numeric-constant>

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 <sequence_name>;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值