Java + Mysql を使用した SOAP ベースの 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 つ以上のドキュメントを作成しようとすると、問題が発生します。これにより、「ロックを取得しようとしたときにデッドロックが見つかりました」というメッセージが表示されます。
誰かが、デッドロックの問題を回避し、同時に適切な数のドキュメントを利用できるようにするというアイデアを持っていますか?. これは私の最初の Web サービスです。ありがとう。