获取SQLSERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY

     插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。
       个人感觉最快的方式就是,在插入数据后直接获取主键的值,然后返回过来。
方法如下:
sql语句如下:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
在sql语句中加入SELECT @@IDENTITY AS returnName;用来获取主键的值
在程序中 获取返回值:
    public int sqlexecutereader(string sql)
    {
        DBopen();
        SqlCommand myComm = new SqlCommand(sql, Connection);
        int newID = Convert.ToInt32(myComm.ExecuteScalar());
        DBclose();
        return newID;
    }

当然在此处主键是int类型的自动增加的。DBopen();DBclose();的操作在此就 不多说了。

select SCOPE_IDENTITY()

返回上面操作的数据表最后row的IDENTITY 列的值;

返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。

SELECT   @@IDENTITY

返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
创建表:

create table T_User(F_ID int identity(1,1not null,F_Name varchar(20not null)

插入数据:

insert into T_User(F_Name) values('我是谁'Select SCOPE_IDENTITY()

存储过程:

CREATE PROCEDURE [dbo].[sp_User](@F_Name intAS
begin tran Insertinto_T_User
Insert into  dbo.T_User(F_Name) values(@F_Name)
Select SCOPE_IDENTITY()
 

原文地址:https://www.cnblogs.com/goody9807/p/1727999.html