首页 > 解决方案 > 带有 SQL Server 的 MFC 应用程序 - 锁定行/表

问题描述

我希望我的 C++ 应用程序(用 MFC + SQL Server 编写)以下列方式运行:

  1. 打开一个界面。它将从表中读取一些数据并锁定所有读取的行,这样其他人就无法更改这些行,但可以读取它们。
  2. 上一段中的行可以在界面中使用更长的时间,在界面关闭之前对其他人保持锁定。
  3. 经过一段时间(以及一些更改)后,我想编写更改。整个表应该有一个排他锁,直到操作完成。在此操作期间,即使其他人从该表中读取也应该是不可能的(排他锁)。
  4. 写入更改后,表应该被解锁(移除排他锁),但第 1 段中提到的行仍应保持锁定,因为我想继续处理它们。
  5. 最后,关闭界面(释放行锁)。

问题是上述场景仅适用于一开始就开始的事务。表锁 (TABLOCKX) 将一直​​保持到该事务将被提交或回滚,这不是我想要的。

知道如何实现这个目标吗?

标签: c++sql-servermfclocking

解决方案


推荐阅读