创建具有特定起始值的DB2序列

创建具有特定起始值的DB2序列,db2,sequence,Db2,Sequence,在Oracle中,我们可以这样做: declare current_max_value NUMBER; begin select last_number+1 into current_max_value from USER_SEQUENCES where sequence_name = 'HIBERNATE_SEQUENCE'; execute immediate 'CREATE SEQUENCE SEQ__NEW_SEQUENCE MINVALUE 1 MAXVALUE 99999999999

在Oracle中,我们可以这样做:

declare current_max_value NUMBER;
begin select last_number+1 into current_max_value from USER_SEQUENCES where sequence_name = 'HIBERNATE_SEQUENCE';
execute immediate 'CREATE SEQUENCE SEQ__NEW_SEQUENCE MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH '||current_max_value|| ' CACHE 20 NOORDER NOCYCLE';

是否存在与DB2等效的功能?

DB2具有非常等效的功能

如果只需要生成不确定关键点,则:-

CREATE TABLE MYTABLE (
     GENERATED_KEY                    BIGINT
        GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 100),
     MY_DATA                          VARCHAR(1000) ........... 
在CREATETABLE语句上,可以轻松地完成此操作。任何时候在插入时遇到空值,都会生成一个新的数字

如果需要在多个表上使用实际序列号,则:

CREATE SEQUENCE ORG_SEQ
 START WITH 1
 INCREMENT BY 1
 NO MAXVALUE
 NO CYCLE
 CACHE 24
将定义一个序列,然后在希望sql中的下一个数字的任何位置使用NEXTVAL关键字:

NEXTVAL FOR ORG_SEQ

DB2具有非常等效的功能

如果只需要生成不确定关键点,则:-

CREATE TABLE MYTABLE (
     GENERATED_KEY                    BIGINT
        GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1, CACHE 100),
     MY_DATA                          VARCHAR(1000) ........... 
在CREATETABLE语句上,可以轻松地完成此操作。任何时候在插入时遇到空值,都会生成一个新的数字

如果需要在多个表上使用实际序列号,则:

CREATE SEQUENCE ORG_SEQ
 START WITH 1
 INCREMENT BY 1
 NO MAXVALUE
 NO CYCLE
 CACHE 24
将定义一个序列,然后在希望sql中的下一个数字的任何位置使用NEXTVAL关键字:

NEXTVAL FOR ORG_SEQ

在经历了巨大的困难之后,我能够用DB2语法解决这个问题,现在开始

创建程序序列名称 语言SQL 动态结果集1 开始原子化 声明MAX_VAL_非整数; 从表名称中选择最大值编号中的最大值名称+1; 执行立即“创建序列序列序列名称无最大值无循环以“| | MAX|u VAL_NO; 终止 去

有人能告诉我为什么我们要使用SQL语言和动态结果集1吗

这里使用的语法是什么,坦率地说,我真的不知道,但我是通过试错法找到的。急切地等待知道什么是语法,是ANSIC还是其他的


如果你能回答这个问题,我将不胜感激。还提供一些链接供学习之用。不是普通的IBM链接经过一番努力,我用DB2语法解决了这个问题,现在开始

创建程序序列名称 语言SQL 动态结果集1 开始原子化 声明MAX_VAL_非整数; 从表名称中选择最大值编号中的最大值名称+1; 执行立即“创建序列序列序列名称无最大值无循环以“| | MAX|u VAL_NO; 终止 去

有人能告诉我为什么我们要使用SQL语言和动态结果集1吗

这里使用的语法是什么,坦率地说,我真的不知道,但我是通过试错法找到的。急切地等待知道什么是语法,是ANSIC还是其他的


如果你能回答这个问题,我将不胜感激。也提供一些链接,以便更好地学习。不是常规的IBM链接

对不起,这不符合我的要求。我需要创建具有特定起始值的序列,以便现有表可以使用新序列。我不能从1开始序列,因为已经存在数据,并且每个表必须使用不同的序列,以便不会有任何跳转数字。您可以在此处RTFM。查看标识选项语法,您会发现一个STARTS WITH子句。此外,对于连续序列的要求,您需要设置“NO CAHCE”选项,但要注意,这将有效地对表进行单线程更新。如果我们能够知道动态sql语句是如何在DB2中执行的,那么我们就可以解决这个问题。我想知道一些如何知道语法的问题,并发布了下面的答案这是一种实用的方法……对不起,这不符合我的要求。我需要创建具有特定起始值的序列,以便现有表可以使用新序列。我不能从1开始序列,因为已经存在数据,并且每个表必须使用不同的序列,以便不会有任何跳转数字。您可以在此处RTFM。查看标识选项语法,您会发现一个STARTS WITH子句。此外,对于连续序列的要求,您需要设置“NO CAHCE”选项,但要注意,这将有效地对表进行单线程更新。如果我们能够知道动态sql语句是如何在DB2中执行的,那么我们就可以解决这个问题。我想知道一些如何知道语法的问题,并发布了下面的答案实现这一点的实用方法是……您需要使用SQL语言作为用C、Java或PL/1编写的DB2支持过程。动态结果集n是对优化器的一个提示,告诉DB2您只期望从过程返回n行。在旧版本的DB2中,如果返回的行数较少,则会发生错误。噢,这真的很有帮助您需要SQL语言作为用C、Java或PL/1编写的DB2支持过程。动态结果集n是对优化器的一个提示,告诉DB2您只期望从过程返回n行。在旧版本的DB2中,如果返回的行数较少,则会发生错误。噢,这真的很有帮助请标出答案。我已经贴了很长的回帖,请标出答案。我很久以前就把它寄了