Csharp/C#教程:批处理的sqlclient命令中的Scope_identity()分享


批处理的sqlclient命令中的Scope_identity()

我通常在插入记录时使用存储过程以确保获得正确的scope_identity()值。 我现在需要在使用SqlClient时获取插入记录的id字段。

我的理解是,如果我使用insert批处理scope_identity()命令,那么它仍然与insert命令在同一范围内? 像下面的东西。 虽然很难validation……我会100%获得正确的id值吗?

(id字段是自动递增bigint – Sql Server)

long newid = 0; using (SqlConnection conn = new SqlConnection(....)) { conn.Open(); using (SqlCommand comm = new SqlCommand ("insert into .... ; select SCOPE_IDENTITY();", conn)) { SqlDataReader reader = comm.ExecuteReader(); if (reader.HasRows) { reader.Read(); newid = Convert.ToInt64(reader[0]); } } } 

SCOPE_IDENTITY的文档 (强调我的):

返回插入同一范围内的标识列的最后一个标识值。 范围是一个模块:存储过程,触发器,函数或批处理 。 因此,如果两个语句在同一存储过程,函数或批处理中 ,则它们在同一范围内。

在这种情况下,您的命令:

 "insert into .... ; select SCOPE_IDENTITY();" 

是一个批处理,因此,您将获得该批处理中最后插入的标识值,在这种情况下是插入中的标识值,因为它是批处理中唯一的其他语句。

上述就是C#学习教程:批处理的sqlclient命令中的Scope_identity()分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/988194.html

(0)
上一篇 2021年12月23日
下一篇 2021年12月23日

精彩推荐