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
你知道的一種可靠的方法來計算一個序列的下一個值?
爲什麼在使用之前你需要知道下一個值會是什麼?如果你對它有這麼多的依賴,那麼無論如何我都會對代碼中的競爭條件保持警惕。 –
你可以通過檢查'sys.sequences'目錄視圖來知道序列的**當前**值,但是你永遠無法可靠地知道將要發佈的**下一個值** - 你必須調用' SELECT ... NEXT VALUE FOR ...'爲了實際得到下一個值 - 沒有提前「偷看」 –
@SeanLange我使用序列生成賬單號碼,並且我想通知用戶最後一個值/下一個值按計費順序。但是在SQL Server上,我無法知道current_value實際上是最後一個值還是將在該序列上使用的下一個值。 –