我想在Apache Derby 10.7中使用SEQUENCE支持。我用以下语句创建了序列:
CREATE SEQUENCE SAMPLE_SEQ AS INT MAXVALUE 999999 CYCLE;
如何从SAMPLE_SEQ中选择下一个/当前值?您能帮我查询一下吗?
SAMPLE_SEQ
mw3dktmi1#
Apache Derby Doc说:使用NEXT VALUE FOR表达式应该是这样的
SELECT NEXT VALUE FOR SAMPLE_SEQ;
nr9pn0ug2#
使用手册中记录的NEXT VALUE FOR:http://db.apache.org/derby/docs/10.7/ref/rrefsqljnextvaluefor.html#rrefsqljnextvaluefor
lx0bsm1f3#
要获取序列的当前值,应执行以下SQL:
SELECT CURRENTVALUE FROM SYS.SYSSEQUENCES WHERE SEQUENCENAME='SAMPLE_SEQ'
trnvg8h34#
在SQL命令提示符下,可以使用以下语句查询下一个值:
values NEXT VALUE FOR <sequence_name>
这将作为一个嵌入到INSERT语句中的表达式工作。例如:
INSERT INTO <table_name> (IDFIELD) VALUES (NEXT VALUE FOR <sequence_name>)
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
sigwle7e6#
下面的SQL返回Derby中SEQUENCE的下一个值:
select next value for SAMPLE_SEQ from (values 1) t
“(values 1)t”部分创建一个1行1列的表,然后用序列中的下一个值替换。在Oracle中,可以使用标准DUAL表,在其他数据库中,可以不使用表执行SELECT。
6条答案
按热度按时间mw3dktmi1#
Apache Derby Doc说:使用NEXT VALUE FOR表达式
应该是这样的
nr9pn0ug2#
使用手册中记录的NEXT VALUE FOR:
http://db.apache.org/derby/docs/10.7/ref/rrefsqljnextvaluefor.html#rrefsqljnextvaluefor
lx0bsm1f3#
要获取序列的当前值,应执行以下SQL:
trnvg8h34#
在SQL命令提示符下,可以使用以下语句查询下一个值:
这将作为一个嵌入到INSERT语句中的表达式工作。例如:
2g32fytz5#
如果要从“序列”中获取“当前值”:
*值(〈sequence〉的下一个值)
在Java中使用JDBC也是如此:
来源:Derby-user-mailing list archive
sigwle7e6#
下面的SQL返回Derby中SEQUENCE的下一个值:
“(values 1)t”部分创建一个1行1列的表,然后用序列中的下一个值替换。在Oracle中,可以使用标准DUAL表,在其他数据库中,可以不使用表执行SELECT。