从数据库中获取自动serialNumber

时间:2013-08-18 06:46:01

标签: sql-server-2008 tsql

在我的项目中,当数据首次保存(技术上是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并同时将其返回给我的程序?

提前致谢。

1 个答案:

答案 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}}