我在其他帖子中发现,在 SQL Server 中,一次读取不能被另一次读取锁定。所以我做如下
BEGIN TRAN
-- I used this update to lock specific row
UPDATE TBL_BALANCE SET TBL_BALANCE.DUMMYCOLUMN = 1 SET WHERE TBL_BALANCE.ACCOUNT = 'XXXXXXXXX'
SELECT BALANCE FROM TBL_BALANCE WHERE TBL_BALANCE.ACCOUNT = 'XXXXXXXXX'
-- Do Some validations over BALANCE
-- Do some update on BALANCE
-- I used this update to lock specific row when next transaction occur by setting DUMMYCOLUMN = 1
UPDATE TBL_BALANCE SET TBL_BALANCE.DUMMYCOLUMN = 0 SET WHERE TBL_BALANCE.ACCOUNT = 'XXXXXXXXX'
COMMIT TRAN
有没有其他有效的方法???
更新
我只是在 DUMMYCOLUMN 上进行这些更新,以便在当前事务提交之前没有其他事务可以读取 ACCOUNT 'XXXXXXXXX' 的余额。我的目的是读取帐户“XXXXXXXXX”的余额,进行一些验证并更新余额。如果我省略了第一次更新,那么在我的事务期间另一个事务将读取 BALANCE。我通过 UPDATE 锁定行来防止这种情况,并且想知道是否有其他方法可以在不更新该行的情况下锁定该行?