锁定具有并发读写访问权限的表的提示

时间:2011-02-07 13:59:11

标签: sql transactions locking sql-server-2000

我看过一些类似的问题,但没有一个能够解决这个问题。

我有一个在线评估应用程序,向用户提出问题,每页一个问题,并记录他们的答案。用户可以在问题之间导航,并自动保存他们的回复。

当从一个页面(问题Q1)导航到另一个页面(问题Q2)时,数据库必须:

  • 更新此用户对Q1的响应(如果存在)或插入对Q1的响应。
  • 选择此用户对Q2的响应(如果存在)以填充页面。

[RESPONSE]表是许多用户同时读写的争论点。但是,每个用户只能读取和写入他们自己的行

这让我觉得我可以安全地使用(READUNCOMMITTED),和UPDATE with(NOLOCK)。我担心的是,我不希望出现用户前进页面的情况,然后在更新之前跳回并获取旧数据。我可以把两个操作放在一个事务中,但如果我使用NOLOCK提示会有什么不同吗?

我可以使用什么锁定策略来减轻对此表的争用?

我们目前正在使用SQL2000。

1 个答案:

答案 0 :(得分:2)

您应该只需要使用rowlock提示,并确保您具有适当的索引,以便可以直接搜索行而无需扫描属于不同用户的其他行。