读取和自增SQL Server中的int值

本文关键字:中的 int Server SQL 读取 | 更新日期: 2023-09-27 18:08:25

我需要在SQL Server 2008中使用c#自动读取和增加一个值。

例如,我必须插入一个"批"的物品,为此我需要最后一批的编号,并确保没有其他人得到这个编号。

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

我该怎么做?

读取和自增SQL Server中的int值

批号必须是连续的吗?为什么不直接用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字段,并自动增加。这样,您就不必担心代码中的增量了。