1
我有一个基于soap的web服务,使用Java + Mysql。使用触发器在mysql行中进行并发更新
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个或更多文档时。这给了我一个“尝试锁定时发现的死锁”。
有人有一个想法来改善这种没有死锁问题,同时有适当数量的文件可用?这是我的第一个Web服务。谢谢。