在我的项目中,当数据首次保存(技术上是INSERT命令)时,我必须得到一个StudentId。目前我的插入存储过程如下:
ALTER PROCEDURE [dbo].[usp_iSaveStudent]
-- Add the parameters for the stored procedure here
@StudentId varchar(50),
@FirstName varchar(50),
@MiddleName varchar(50),
@LastName varchar(50),
@CGPA decimal(18),
@Email varchar(50)
AS
BEGIN
insert into dbo.Student values(@StudentId,@FirstName,@MiddleName,@LastName,@CGPA,@Email)
END
第一次保存时,我正在为studentId传递NULL字符串。任何人都可以建议我如何为我插入的每条记录生成一个自动递增的StudentId并同时将其返回给我的程序?
提前致谢。
答案 0 :(得分:1)
在 SQL SERVER 中,在创建表时使用IDENTITY(1,1)
函数,该函数将自动递增到下一个值。
插入查询后,使用@@IDENTITY
变量获取当前会话中输入表格的最后一个标识值
像
这样的东西// Create your table
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
)
//Create your procedure
create procedure myproc as
begin
insert into persons(lastname) values('jasdg');
print @@identity; // use this variable to get the last value generated
end
虽然您也可以使用 SCOPE_IDENTITY
代替 @@IDENTITY
,但最好访问this blog以使用合适的 {{1}} 。