我有一个使用 Java + Mysql 的基于肥皂的 Web 服务。
Web 服务包括保存和发送作为响应生成的文档。每个用户都有有限数量的可用文档。该服务向外部系统提供文档,因此,我必须随时了解特定用户可用的文档。
为了改进这一点,构建一个触发器,在创建新文档时更新用户行。
CREATE TRIGGER `Service`.`discount_doc_fromplan`
AFTER INSERT ON `Service`.`Doc` FOR EACH ROW
UPDATE `Service`.`User` SET User.DocAvailable = User.DocAvailable - 1 where User.id = NEW.idUser
当用户由于他们的系统而尝试同时创建 2 个或更多文档时,就会出现问题。这给了我一个“试图获得锁定时发现的死锁”。
有人想在没有死锁问题的情况下改进这一点,同时提供正确数量的可用文档?这是我的第一个网络服务。谢谢。