我收到一些死锁错误,这个更新是一个sql server选择杀死
UPDATE Dealer_Balance
SET Balance = COALESCE(EndBalance,0),
Deposit = COALESCE(EndDeposit,0),
Overdraft = COALESCE(EndOverdraft,0)
FROM Dealer_Balance WITH (ROWLOCK,HOLDLOCK)
INNER JOIN @BalanceTable AS BalanceTable ON
Dealer_Balance.DealerID = BalanceTable.ContractorID
END
我有点迷失在这里,我应该在BD中寻找什么?变量表有任何锁定问题吗?
在此更新之前,我在下面的查询中使用相同的步骤:
INSERT INTO @BalanceTable
(ContractorType, ContractorID, StartBalance, EndBalance, CurBalance,
StartDeposit, EndDeposit, CurDeposit, StartOverdraft, EndOverdraft,
CurOverdraft, TransferDate, PayType)
SELECT
AccountChange.ContractorType, AccountChange.ContractorID,
Dealer_Balance.Balance AS StartBalance,
(Dealer_Balance.Balance + COALESCE(AccountChange.BalanceChange, 0)) AS
EndBalance, NULL AS CurBalance, Dealer_Balance.Deposit AS StartDeposit,
(Dealer_Balance.Deposit + COALESCE(AccountChange.DepositChange,0)) AS
EndDeposit, NULL AS CurDeposit, Dealer_Balance.Overdraft,
(Dealer_Balance.Overdraft + COALESCE(AccountChange.OverdraftChange,0))
AS EndOverdraft, NULL AS CurOverdraft,
COALESCE(@AdvancedOverrideTransferDate,GetDate()) AS TransferDate,
AccountChange.PayType
FROM Dealer_Balance WITH (ROWLOCK,HOLDLOCK)--(ROWLOCK,XLOCK)
INNER JOIN @AccountChangeTable AS AccountChange ON
Dealer_Balance.DealerID = AccountChange.ContractorID
有人可以给我一些建议吗?