[英]Lock row from another table while inserting
我正在开发一家银行 API,我有一个关于行锁的问题。 我有交易表、客户表和帐户表,并将用户余额存储在帐户表中。 每当我在事务中插入新行时,我想锁定帐户表中的余额列,因为插入新事务会更改用户余额,所以我想锁定用户帐户行直到插入完成。 有人可以帮帮我吗?
首先尝试在帐户表上设置更新锁。
BEGIN TRAN;
INSERT INTO TransactionTable
SELECT @client_id, @amount, ...
WHERE EXISTS
(
SELECT 1
FROM AccountTable A WITH (UPDLOCK)
WHERE A.client_id = @client_id
);
UPDATE AccountTable
SET amount = amount + @amount
WHERE client_id = @client_id;
COMMIT;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.