读取和自增SQL Server中的int值
本文关键字:中的 int Server SQL 读取 | 更新日期: 2023-09-27 18:08:25
我需要在SQL Server 2008中使用c#自动读取和增加一个值。
例如,我必须插入一个"批"的物品,为此我需要最后一批的编号,并确保没有其他人得到这个编号。
所以我有一个只有最后一个批号的表,并找到一种方法来获取和更新数字,只有一步。
我该怎么做?
批号必须是连续的吗?为什么不直接用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
字段,并自动增加。这样,您就不必担心代码中的增量了。