如何取得刚刚插入MSSQL自增长的id值
1个回答
2017-11-09 · 知道合伙人软件行家
关注
展开全部
在MSSQL2000中提供了两个函数(ident_current,scope_identity)
当你插入记录后,可以调用函数:
调用方式举列:print ident_current('table') ,这样就可以得到 新的identity值。
或者:print scope_identity() '这将获得在当前存储过程,触发器等其他程序创建的最新记录的identity值. 这个的好处就是改进了@@identity的不足.全局变量@@identity有一个问题,当对一张表执行insert时,如果该表有触发器程序在执行插入操作,然后,接着在另一张表中插入记录,这样返回@@identity值就是第二张表的identity值。
备注:以上用法在MSSQL2000或以上版本均可用,如果是比较底的版本需要自己另写存储过程来处理。这里就不写了,因为我认为现在用2000以下的版本的人太少了。至于我恐怕没有机会用了,呵呵!
测试:
1.新建一个表 TBLINDEDITY
CREATE TABLE [TBLINDEDITY] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.插入3条数据
insert into TBLINDEDITY values('dong')
insert into TBLINDEDITY values('chao')
insert into TBLINDEDITY values('hui')
3.用这个函数测试一下
print ident_current('TBLINDEDITY')
4.结果:
3
结论:测试成功!这个问题已经尘埃落地.
当你插入记录后,可以调用函数:
调用方式举列:print ident_current('table') ,这样就可以得到 新的identity值。
或者:print scope_identity() '这将获得在当前存储过程,触发器等其他程序创建的最新记录的identity值. 这个的好处就是改进了@@identity的不足.全局变量@@identity有一个问题,当对一张表执行insert时,如果该表有触发器程序在执行插入操作,然后,接着在另一张表中插入记录,这样返回@@identity值就是第二张表的identity值。
备注:以上用法在MSSQL2000或以上版本均可用,如果是比较底的版本需要自己另写存储过程来处理。这里就不写了,因为我认为现在用2000以下的版本的人太少了。至于我恐怕没有机会用了,呵呵!
测试:
1.新建一个表 TBLINDEDITY
CREATE TABLE [TBLINDEDITY] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [char] (10) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.插入3条数据
insert into TBLINDEDITY values('dong')
insert into TBLINDEDITY values('chao')
insert into TBLINDEDITY values('hui')
3.用这个函数测试一下
print ident_current('TBLINDEDITY')
4.结果:
3
结论:测试成功!这个问题已经尘埃落地.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询