0

我有一个每天有 100 个用户使用的 .NET 工作流应用程序。此工作流是指更新工作流状态 ID 的表。更新语句正在使用rowlock.

我在 SP 中的更新声明:

update table1 set statuid = a.statId from table2 a with (rowlock) where  ID = @ids

我的问题是:这个更新真的需要一个rowlock吗?数据库不能自动处理吗?

4

1 回答 1

0

rowlock在这种情况下你不需要。

update table1 set statuid = a.statId from table2 a where ID = @ids

statId但是,您的示例 SQL 语句假定in只有 1 个值table2

编辑

你在评论中说:

表 2 中的 statuid 可以有多个值。但是,ID 在给定时间点是唯一的

我仍然认为没有rowlock必要,但为了安全起见,您应该从 table2 中获取 id 的最大值。

update table1 set statuid = (select max(statId) from table2) where ID = @ids
于 2019-12-20T15:05:16.937 回答