我有一個SQL Server 2012的序列對象:回滾SQL Server 2012的序列
/****** Create Sequence Object ******/
CREATE SEQUENCE TestSeq
START WITH 1
INCREMENT BY 1;
我有一個運行在一個事務中某些查詢一個SP:
BEGIN TRAN
SELECT NEXT VALUE FOR dbo.TestSeq
<here all the query update code......>
ROLLBACK TRAN
如果交易失敗,全部更新回滾沒有問題,但序列不回滾我猜是因爲它超出了事務的範圍。
任何線索來處理?
你不能回滾序列,它不支持事務處理,你可以做什麼是存儲在一個變量當前序列,並在發生任何錯誤前,你可以改變異常塊序列:與@var 'ALTER SEQUENCE TestSeq RESTART INCREMENT BY 1;' –
我認爲會更好地保留它,因爲如果我改變序列會發生什麼,並且在那一刻其他連接會生成下一個值? – VAAA
是的,你是對的,最好是保持原樣。 –