最近数据库迁移,菜单插入系统报错!
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>;
本文解析了数据库迁移过程中菜单插入失败的SQL错误,详细介绍了序列(Sequence)的创建、查询及修改方法,并提供了常见操作的SQL语句,帮助解决数据库迁移时遇到的序列缺失问题。
7585

被折叠的 条评论
为什么被折叠?



