首页 新闻 会员 周边

SQL2005 ,如何用存储过程取刚刚插入的主键ID值 主键ID为newid()

0
悬赏园豆:5 [已解决问题] 解决于 2009-02-26 10:46

例:一个table表,字段为ID,默认值newid(),字段NAME,字段AGE

存储过程:

CREATE PROCEDURE abc

insert into (NAME,AGE) VALUES('小王','18')

如何取insert后,新生成数据的ID值啊,注意ID是newid(),

请高手帮忙啊

PS:用@@IDENTITY 行不通,因为主键ID不是数值型

体育皇帝的主页 体育皇帝 | 初学一级 | 园豆:-5
提问于:2009-02-25 14:53
< >
分享
最佳答案
0

declare @guid uniqueidentifier
select @guid = newid();
insert into ...
return @guid;

码尔代夫iimax | 老鸟四级 |园豆:3138 | 2009-02-25 19:42
其他回答(3)
0

SELECT SCOPE_IDENTITY()

Leox | 园豆:461 (菜鸟二级) | 2009-02-25 15:12
0

SCOPE_IDENTITY()应该返回的还是numeric类型的

对于guid类型的,一般都是在客户段先生成,再插入

wingoo | 园豆:1513 (小虾三级) | 2009-02-25 15:16
0

必须在事务的情况下才能这么做:

begin trans

  insert into ...

  select top 1 ID desc from 表

end trans

注意那个select不一定对,可能要根据某一列来order by xxx desc,这一列必须可以确定地找到最后一行,而事务的作用就是保证在select之前不会有新的行被插入,因此最好你的用户表有个创建日期之类的字段面,能保证方便地找到最后一行

Gray Zhang | 园豆:17610 (专家六级) | 2009-02-25 16:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册