sql语句返回主键SCOPE_IDENTITY()

在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()

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐