gpt4 book ai didi

SQL Server - 从序列中获取下一个值而不推进 current_value

转载 作者:行者123 更新时间:2023-12-05 01:02:16 24 4
gpt4 key购买 nike

我正在尝试编写一个存储过程来验证序列中的 NEXT VALUE 是否等于表中的最大数加上 1。我通过将表号与序列的 current_value 进行比较来做到这一点系统序列。

但是,我遇到了麻烦,因为我不确定如何区分 current_value 为“1”和 NEXT VALUE 为“1”的情况与 NEXT VALUE 为“1”的情况'2'。

我不想实际调用 NEXT VALUE,因为我不想增加序列的计数。

例如本例:

CREATE SEQUENCE  testseq AS bigint START WITH 1 INCREMENT BY 1 CACHE 500000
select current_value from sys.sequences where name = 'testseq'

current_value 为 1,下一个值为 1

对比

select NEXT VALUE for testseq
select current_value from sys.sequences where name = 'testseq'

current_value 为 1,下一个值为 2。

我将无法更改序列的属性。有什么想法吗?

最佳答案

适用于 SQL Server 2017 及更高版本:

SELECT CASE WHEN last_used_value IS NULL
THEN CAST(current_value as bigint)
ELSE CAST(current_value as bigint) + 1
END AS next_val
FROM sys.sequences WHERE name = 'sequence_name'

关于SQL Server - 从序列中获取下一个值而不推进 current_value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34232448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com