例:一个table表,字段为ID,默认值newid(),字段NAME,字段AGE
存储过程:
CREATE PROCEDURE abc
insert into (NAME,AGE) VALUES('小王','18')
如何取insert后,新生成数据的ID值啊,注意ID是newid(),
请高手帮忙啊
PS:用@@IDENTITY 行不通,因为主键ID不是数值型
declare @guid uniqueidentifier
select @guid = newid();
insert into ...
return @guid;
SELECT SCOPE_IDENTITY()
SCOPE_IDENTITY()应该返回的还是numeric类型的
对于guid类型的,一般都是在客户段先生成,再插入
必须在事务的情况下才能这么做:
begin trans
insert into ...
select top 1 ID desc from 表
end trans
注意那个select不一定对,可能要根据某一列来order by xxx desc,这一列必须可以确定地找到最后一行,而事务的作用就是保证在select之前不会有新的行被插入,因此最好你的用户表有个创建日期之类的字段面,能保证方便地找到最后一行