我通常在插入记录时使用存储过程,以确保获得正确的 scope_identity() 值。我现在使用 SqlClient 时需要获取插入记录的 id 字段。
我的理解是,如果我将 scope_identity() 命令与 insert 一起批处理,那么它仍然与 insert 命令在同一范围内吗?像下面的东西。虽然很难验证...我会 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]);
}
}
}