更新SQL表的列中的许多记录时,如何跳过锁定或更新时间过长的记录

问题描述 投票:0回答:1

该应用程序使用 ASP.NET Web 表单在 .NET 中进行编码。我正在尝试更改数百个订单号的优先级代码。

要分配的新代码是用户在 GridView 中订单号旁边的下拉列表中选择的代码。

这是我的 SQL 更新语句,当用户单击更新按钮时执行

for (int i = 0; i < GridView1.Rows.Count; i++)


  { DropDownList PTY_CHANGE = (DropDownList)GridView1.Rows[i].FindControl("PTY_CHANGE");

cnn3.Open();
                
query = BEGIN TRAN T1
  UPDATE DATAORDERS
  SET DATAORDERS.PRIORITYCODE =@PTYCODE WHERE DATAORDERS.ORDERNO =@ORDERNO
COMMIT TRAN T1

 SqlCommand cmd = new SqlCommand(query, cnn3);
 
cmd.Parameters.AddWithValue("@PTYCODE ", PTY_CHANGE.SelectedItem.Value);
  
cmd.Parameters.AddWithValue("@orderno", GridView1.Rows[i].Cells[0].Text);
 
 cmd.CommandTimeout = 180;
   
cmd.ExecuteReader();
   
cnn3.Close();
}

我遇到的问题是某些订单被锁定(很可能公司中的其他人正在不同的模块中处理该订单),因此代码只是停滞不前。

我想跳过该订单,然后尝试更新列表中的下一个订单号。

谢谢您的帮助。

c# sql .net sql-server-2008
1个回答
0
投票

阅读过去

BEGIN TRAN T1
  UPDATE DATAORDERS WITH (READPAST)
  SET DATAORDERS.PRIORITYCODE =@PTYCODE WHERE DATAORDERS.ORDERNO =@ORDERNO
COMMIT TRAN T1
© www.soinside.com 2019 - 2024. All rights reserved.