gpt4 book ai didi

sql-server - 如何在不增加序列的情况下知道序列的下一个值?

转载 作者:行者123 更新时间:2023-12-05 06:38:07 24 4
gpt4 key购买 nike

sys_sequences 上没有 next_value 列,因此您需要获取 current_value 并递增它。

select convert(int, current_value) + 1 as next_value
from sys.sequences
where name = 'my_sequence'

问题出现在你重新启动一个序列时,之前的查询会返回一个错误的值。

alter sequence my_sequence restart with 100;

select convert(int, current_value) + 1 as next_value
from sys.sequences
where name = 'my_sequence'

这将返回 101 而不是真正的下一个值,即 100。

您知道计算序列下一个值的可靠方法吗?

最佳答案

Do you know of a reliable way to calculate the next value of a sequence ?

据我所知,你是对的。一个可能的解决方法是将您的重启值设置为比您想要的值小一个,并在您的重启之后用一个虚拟变量用完第一个值。

create sequence my_sequence as int start with 1;
alter sequence my_sequence restart with 99;
declare @dummy int = next value for my_sequence;

select convert(int, s.current_value) + convert(int,s.increment) as next_value
from sys.sequences s
where s.name = 'my_sequence';

dbfiddle.uk

但正如 marc_s 指出的那样,对于下一个值没有可靠的“窥视”。

关于sql-server - 如何在不增加序列的情况下知道序列的下一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46646881/

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