Sql 如何找到序列的最后一个数字
我在应用程序中使用spring批处理。我有一个上传过程,其中数据从excel文件加载到DB中。excel有五个电子表格加载到五个不同的表中。如果上传成功,则没有问题。但是当上传失败时,比如在第3页,我会回滚整个上传。这会导致第一个表中的序列跳过数字。我怎样才能解决这个问题。我的序列递增1,没有缓存Sql 如何找到序列的最后一个数字,sql,spring-batch,sequences,Sql,Spring Batch,Sequences,我在应用程序中使用spring批处理。我有一个上传过程,其中数据从excel文件加载到DB中。excel有五个电子表格加载到五个不同的表中。如果上传成功,则没有问题。但是当上传失败时,比如在第3页,我会回滚整个上传。这会导致第一个表中的序列跳过数字。我怎样才能解决这个问题。我的序列递增1,没有缓存 提前感谢要解决此问题,您很可能需要改变您的期望。序列在事务中使用时通常不会回滚。例如: T1使用序列S插入表A以生成PK值 T2使用序列S插入表B以生成PK值 现在您回滚T1。T2中的PKs值会发生什
提前感谢要解决此问题,您很可能需要改变您的期望。序列在事务中使用时通常不会回滚。例如:
identity
列的概念,DB服务器在这些列中内部分配密钥,但即使是这些,也会有间隙
如果您确实需要不间断的PK流,则必须使用您自己的序列(或Java代码中的计数器),并自行维护/重置此序列。我们在这里讨论的是Oracle序列吗?谢谢Aaron。我对每个表使用单独的序列。在这种情况下,首先回滚T2,然后只回滚T1。顺便说一句,我已经编写了一个java代码,在上传失败时重置序列。当两个进程同时将数据插入同一个表时,同样的问题也会发生。