データベーススペシャリスト掲示板

掲示板検索:

[0176]H31 PM1 問2 設問3 (1)

 yutapさん(No.1) 
お世話になっております。

当問題の答えが「在庫」テーブルとなっております。
在庫テーブルがデッドロックの対象となりうる点については承知しているのですが、
「発注」テーブルが対象となっていない点についてご教授いただけないでしょうか。

出庫要求→在庫引当→(在庫が足りなければ)発注(登録)
入庫→発注テーブルの処理状況を更新

がありますので、発注テーブルについてもデッドロックが発生する可能性があると思っているのですがいかがでしょうか?
2021.06.01 19:17
GinSanaさん(No.2) 
出庫要求→在庫引当→(在庫が足りなければ)発注(登録)
した後にその在庫の行の発注済フラグをオンにして、
入庫→発注テーブルの処理状況を更新かつ
入庫したタイミングで発注済フラグをオフにするんですよね。
タイミングが重なりようがないから、(そりゃ、物理的な輸送時間をゼロ査定するとか、原理的なことになれば、できますけど)起きないって扱いなんでしょう。
2021.06.02 09:15
GinSanaさん(No.3) 
というか、INSERTとUPDATEだから、起きようがないですね。やはりタイミングが一致する場合がないのがでかいですが、これが「発注」に処理状況をnullで登録してまたまたトリガで処理状況を更新するんだ、ってなって複数行そういうトリガが呼ばれたら、起きることがあります(qiita.com/smitho/items/c81d58ec212a90478bfe  Insert文一つでもデッドロックが発生する?)。まあ、今回の場合、最初からデフォルトでINSERTすればいいだけだから、そんなのは起きませんが。
2021.06.02 09:34
 yutapさん(No.4) 
GinSana様
コメントありがとうございます。

発注と入庫が同じタイミングにならないという点については理解いたしました。
発注済みフラグが部品単位に1つしか存在しないので、1度発注した部品は入庫されるまで、再度発注されることはないという点を見落としていました。
ありがとうございます。
2021.06.02 19:53

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

投稿削除用のパスワード(20文字以内)

プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2016-2021 データベーススペシャリストドットコム All Rights Reserved.

Pagetop