• 締切済み

Sqlトランザクションの必要性

SQLServer2005Expressを使用しています。 そこでトランザクションについて質問させて頂きます。 複数のスレッドや複数の端末から1つのテーブルの1つのレコードを 更新する場合に、トランザクションを掛ける必要性はあるでしょうか。 複数のセットとなるテーブルを更新する場合はトランザクションで 整合性を保ちつつ排他を行うので必須と思いますが、 1つのテーブルの1つのレコードの場合も必須でしょうか。 また、必須ではなくてもトランザクションを掛けておく有効な理由は あるでしょうか。 ちなみにトランザクション中は、他のコネクションから参照も不可に なるようにしております。 よろしく願いいたします。

みんなの回答

回答No.1

たとえば在庫数を引きたい場合に在庫数が100有ったとします。最初の処理で在庫が100個有ったのでその内60個を出庫する為60を引き40としようとしています。トランザクションが無い場合は次の処理でも更新前の100を見て同じく60個を出庫する為60を引こうとします。結果100個しか在庫が無いのに120個も出庫できることになります。

関連するQ&A