带SQL Server的MFC应用程序-锁定行/表 我希望我的C++应用程序(用MFC +SQL Server编写)的行为如下: 打开一个接口。它将从表中读取一些数据并锁定所有读取的行,这样其他人就不能更改这些行,只能读取它们 上面段落中的行可以在更长的时间内在接口中使用,在关闭接口之前,对其他行保持锁定 经过一段时间(和一些更改)后,我想写这些更改。整个表应该有一个独占锁,直到操作完成。在此操作期间,其他人甚至不可能读取此表(独占锁定) 写入更改时,表应该被解锁(移除独占锁),但是第1段中提到的行仍然应该保持锁定,因为我想继续处理它们 最后,关闭接口(释放行锁)

带SQL Server的MFC应用程序-锁定行/表 我希望我的C++应用程序(用MFC +SQL Server编写)的行为如下: 打开一个接口。它将从表中读取一些数据并锁定所有读取的行,这样其他人就不能更改这些行,只能读取它们 上面段落中的行可以在更长的时间内在接口中使用,在关闭接口之前,对其他行保持锁定 经过一段时间(和一些更改)后,我想写这些更改。整个表应该有一个独占锁,直到操作完成。在此操作期间,其他人甚至不可能读取此表(独占锁定) 写入更改时,表应该被解锁(移除独占锁),但是第1段中提到的行仍然应该保持锁定,因为我想继续处理它们 最后,关闭接口(释放行锁),c++,sql-server,mfc,locking,C++,Sql Server,Mfc,Locking,问题在于,上述场景仅适用于在开始时启动的事务。表锁(TABLOCKX)将一直保持,直到提交或回滚此事务,这不是我想要的 你知道如何实现这一目标吗?所描述的算法在多用户设置中永远不会起作用。请考虑以下几点:用户A锁定几行,用户B锁定一些其他行。现在用户A正试图提交一些数据,试图在数据库上获得独占锁,但不能,因为用户B仍然在其行上持有锁。你必须回去再看看你的要求。@I不可预见,我很害怕,但我希望有办法做到这一点。谢谢你的回复。

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


你知道如何实现这一目标吗?

所描述的算法在多用户设置中永远不会起作用。请考虑以下几点:用户A锁定几行,用户B锁定一些其他行。现在用户A正试图提交一些数据,试图在数据库上获得独占锁,但不能,因为用户B仍然在其行上持有锁。你必须回去再看看你的要求。@I不可预见,我很害怕,但我希望有办法做到这一点。谢谢你的回复。