sql语句返回主键SCOPE_IDENTITY()

2022-05-24 0 960

在sql语句后使用

SCOPE_IDENTITY()

当然您也可以使用 SELECT @@IDENTITY

但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确.

示例:


复制代码 代码如下:

insert into dbo.SNS_BlogData(userName) values(‘jiangyun’) ;

SELECT SCOPE_IDENTITY()

获取SQL-SERVER数据库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,1) not null,F_Name varchar(20) not null)

插入数据:

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

存储过程:

CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS

begin tran Insertinto_T_User

Insert into dbo.T_User(F_Name) values(@F_Name)

Select SCOPE_IDENTITY()

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql sql语句返回主键SCOPE_IDENTITY() https://www.niceym.com/60353.html