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服務。謝謝。