我需要生成一个序列号以用作主键(在遗留系统中)
我想知道以下解决方案在竞争条件下是否会遇到并发问题。
CREATE TABLE SequenceGenerator
(
Sequence INT
)
INSERT INTO SequenceGenerator SELECT 0
这是存储过程,每当我需要下一个序列号时我都会调用它
CREATE PROCEDURE GetNextSequence
AS
SET NOCOUNT ON
DECLARE @NextSequence INT
UPDATE SequenceGenerator SET
@NextSequence = Sequence,
Sequence = Sequence + 1
RETURN @NextSequence + 1
谢谢
最佳答案
是的。
是否有某种原因无法使用身份字段(即:identity(1,1)
)来代替?
如果您想使用上面的代码,您当然应该将其包装在可序列化的事务中并处理任何死锁情况。
关于sql - 在sql server中生成下一个序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586527/