java 如何在Apache Derby中使用SEQUENCE?

ufj5ltwl  于 2023-02-20  发布在  Java
关注(0)|答案(6)|浏览(127)

我想在Apache Derby 10.7中使用SEQUENCE支持。我用以下语句创建了序列:

CREATE SEQUENCE SAMPLE_SEQ AS INT MAXVALUE 999999 CYCLE;

如何从SAMPLE_SEQ中选择下一个/当前值?您能帮我查询一下吗?

mw3dktmi

mw3dktmi1#

Apache Derby Doc说:使用NEXT VALUE FOR表达式
应该是这样的

SELECT NEXT VALUE FOR SAMPLE_SEQ;
nr9pn0ug

nr9pn0ug2#

使用手册中记录的NEXT VALUE FOR:
http://db.apache.org/derby/docs/10.7/ref/rrefsqljnextvaluefor.html#rrefsqljnextvaluefor

lx0bsm1f

lx0bsm1f3#

要获取序列的当前值,应执行以下SQL:

SELECT CURRENTVALUE FROM SYS.SYSSEQUENCES WHERE SEQUENCENAME='SAMPLE_SEQ'
trnvg8h3

trnvg8h34#

在SQL命令提示符下,可以使用以下语句查询下一个值:

values NEXT VALUE FOR <sequence_name>

这将作为一个嵌入到INSERT语句中的表达式工作。例如:

INSERT INTO <table_name> (IDFIELD) VALUES (NEXT VALUE FOR <sequence_name>)
2g32fytz

2g32fytz5#

如果要从“序列”中获取“当前值”:

*值(〈sequence〉的下一个值)

在Java中使用JDBC也是如此:

ResultSet rs = conn.prepareStatement("values (next value for <sequence>)").executeQuery();
rs.next();
int seqValue = rs.getInt(1);

来源:Derby-user-mailing list archive

sigwle7e

sigwle7e6#

下面的SQL返回Derby中SEQUENCE的下一个值:

select next value for SAMPLE_SEQ from (values 1) t

“(values 1)t”部分创建一个1行1列的表,然后用序列中的下一个值替换。在Oracle中,可以使用标准DUAL表,在其他数据库中,可以不使用表执行SELECT。

相关问题