自动递增主键列

时间:2017-12-23 05:23:06

标签: asp.net sql-server auto-generate

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

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

将列设置为identity并且将自动生成值,并且在插入之后,您可以从变量@@ identity获取插入的id。喜欢这个

表格设计

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

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

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

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

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

select @@identity

现在插入后,第二个选择将返回值1,因为身份字段的值为1.

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

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

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