SQL Server中的读取和增量int值

我需要使用c#在SQL Server 2008中以primefaces方式读取和增加值。

例如,我必须插入“批次”的项目,为此我需要最后一批的编号,并确保没有其他人得到这个数字。

所以我只有一个表,只有最后一个批号,并找到一种方法来获取和更新数字只需一步。

我怎样才能做到这一点?

批号是连续的至关重要吗? 为什么不使用identity ? 这在并发性方面更好,否则您需要阻止并发插入尝试以防它们被回滚并在序列中留下间隙。

如果绝对是一个要求,你可以这样做

 CREATE TABLE dbo.Sequence ( OneRow CHAR(1) DEFAULT('X') PRIMARY KEY CHECK(OneRow = 'X'), val INT ) 

插入一个包含初始种子的行。

 INSERT INTO dbo.Sequence (val) VALUES (1) 

然后为你的插入分配一个足够大小的范围(显然在同一个事务中调用它)

 CREATE PROC dbo.GetSequence @val AS int OUTPUT, @n as int =1 AS UPDATE dbo.Sequence SET @val = val = (val + @n); 

最简单的方法是只更改表格,使批号是一个identity字段,并自动增加。 然后你不必担心增加代码。