自动递增主键列

问题描述 投票:1回答:1

我有一个页面银行转移,在我的asp.net应用程序中包含一个“转移号码”列。这是一个自动生成的列。我根据查询获取此值:

IF (SELECT COUNT(1) FROM tableName) = 0
    SELECT IDENT_CURRENT('tableName')
ELSE
    SELECT IDENT_CURRENT('tableName') + 1

问题是当两个用户登录时,它显示该页面的相同转移号码。在插入记录之前,如何为不同用户显示不同的转移号码?

谢谢。

asp.net sql-server auto-generate
1个回答
1
投票

将列设置为标识,将自动生成值,插入后,您可以从变量@@ identity获取插入的id。像这样

表设计

CREATE TABLE YourTable
(
SeqNo INT IDENTITY(1,1) PRIMARY KEY,
Col1 VARCHAR(50),
Col2 INT,
...
)

我已将SeqNo列设置为Identity和Primary键。

Identity(1,1)表示第一个值为1,然后对于每一行,增量将为+1,依此类推。

现在我在表格中插入一条记录

INSERT INTO YourTable(Col1,Col2)
values('abc',1)

select @@identity

现在插入后,第二个选择将返回值1,因为标识字段的值为1。

如果我再跑一次,我会得到2,依此类推

您也可以在@@ IDENTITY上调用系统定义的函数SCOPE_IDENTITY()(如果涉及触发器)

您可以避免使用此冲突,因为值是由数据库本身生成的

© www.soinside.com 2019 - 2024. All rights reserved.