假设在SQL Server上创建了一个序列:
CREATE SEQUENCE dbo.my_seq
START WITH 1
INCREMENT BY 1
NO CYCLE;
GO
下面是获取下一个序列值的Java代码:
Connection conn = ...;
String sql = "SELECT NEXT VALUE FOR my_seq;";
try (Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(sql)) {
while (resultSet.next()) {
long seq = resultSet.getLong(1);
System.out.println(seq);
}
}
当这个代码被重复执行时,为什么序列会跳转两次?
2
4
6
我试过开和关CACHE
选项.这没什么区别.
如果我在Azure Data Studio上多次执行同一查询,则序列将递增1.
我正在运行Microsoft SQL Server 2019(RTM-CU15)(KB5008996)-15.0.4198.2(X64).我对com.microsoft.sqlserver:mssql-jdbc:10.2.0.jre8
个和com.microsoft.sqlserver:mssql-jdbc:11.1.1.jre8-preview
个司机try 了同样的代码,得到了同样的行为.
我分析了SQL Server查询历史记录,Java代码只进行了一次查询,每次执行时获取下一个序列值.