加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql语句返回主键SCOPE_IDENTITY()

发布时间:2020-12-12 09:29:05 所属栏目:MsSql教程 来源:网络整理
导读:在sql语句后使用 SCOPE_IDENTITY() 当然您也可以使用 SELECT @@IDENTITY 但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确. 示例: div class="codetitle" a style="CURSOR: pointer" data="69067" class="copybut" id="copybut69067" onclick="d

在sql语句后使用
SCOPE_IDENTITY() 当然您也可以使用 SELECT @@IDENTITY 但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确. 示例:
<div class="codetitle"><a style="CURSOR: pointer" data="69067" class="copybut" id="copybut69067" onclick="doCopy('code69067')"> 代码如下:<div class="codebody" id="code69067">
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;用来获取主键的值
在程序中 获取返回值:
<div class="codetitle"><a style="CURSOR: pointer" data="60781" class="copybut" id="copybut60781" onclick="doCopy('code60781')"> 代码如下:<div class="codebody" id="code60781">
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()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读