我有一个页面银行转移,在我的asp.net应用程序中包含一个“转移号码”列。这是一个自动生成的列。我根据查询获取此值:
IF (SELECT COUNT(1) FROM tableName) = 0
SELECT IDENT_CURRENT('tableName')
ELSE
SELECT IDENT_CURRENT('tableName') + 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()(如果涉及触发器)
您可以避免使用此冲突,因为值是由数据库本身生成的