- PR -

SqlTransactionでINSERTしたデータの更新が出来ない

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-11-16 19:58
>おそらくそのSELECT文もトランザクションに含めるようにすればOKってことだと思います。

おっしゃる通り、SELECT文トランザクションに含めたら、エラーは出なくなりました!
ありがとうございました。
でもみなさんの意見を聞いていると、どうも毎回SqlCommandのインスタンス生成しているところが、やばそうな感じがしますね。(この時点で、一連のトランザクション処理になっていないのでしょうか?)
私の作成しているトランザクション処理は、いくつものメソッドに分かれていて、
引数でSqlConnectionとSqlTransactionを渡していて、SqlCommandは各メソッド内でインスタンスを生成しています。
SqlCommandも引数として渡さないとだめでしょうか?
それとも、根本的に間違っていて、もっと真っ当な方法があるのでしょうか?
ご教授よろしくお願いします。


Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-11-16 21:41
 それより、どうして"UPDATE 配番テーブル SET NO = NO + 1 WHERE ID=1"なの?シーケンスを使えば、トランザクションや同時実行や、考えなくてもすむやん。


#いや、IDがいくつもあって、不特定多数のシーケンスが必要
#ってことなら、わかるんですけどね。
_________________
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-11-17 10:35
引用:

未記入さんの書き込み (2004-11-16 19:58) より:

SqlCommandも引数として渡さないとだめでしょうか?
それとも、根本的に間違っていて、もっと真っ当な方法があるのでしょうか?


DBアクセス関連を一つのクラスにし、そのインスタンスをメソッドの引数やプロパティで使用するのも手かと

@IT:複数のメソッドにまたがったトランザクション処理についてとか会議室 ディレクトリ>データベース>を探ってみては如何でしょう。
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-11-17 18:48
burton999様 えんぞ@見習様 なちゃ様 Jitta様
貴重なご意見&ご指導ありがとうございました。
資料をもとにもう少し勉強します。
今後ともよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-11-17 21:29
 Books Onlineを見ると、「シーケンス列」というのがありますね。説明を見る限り、INSERTすると自動的に採番(配番)されるみたいです。まぁ、どうやって「今割り当てられた番号を知るか」という問題がありますけど。
_________________
未記入
常連さん
会議室デビュー日: 2004/08/26
投稿数: 34
投稿日時: 2004-11-18 09:25
Jitta様の書き込み(2004-11-16 21:41)より
>#いや、IDがいくつもあって、不特定多数のシーケンスが必要
>#ってことなら、わかるんですけどね。

今回の配番処理は「IDがいくつもあって、不特定多数のシーケンスが必要」なケースでした。
サンプルソースを省略してしまい、問題点が分りづらかったことを
お詫び致します。


Jitta様の書き込み(2004-11-17 21:29)より
>Books Onlineを見ると、「シーケンス列」というのがありますね。説明を見る限り、>INSERTすると自動的に採番(配番)されるみたいです。まぁ、どうやって「今割り当て>られた番号を知るか」という問題がありますけど。

今後、自動配番処理が必要なケースが生じましたら参考にさせていただきます。
ご指導ありがとうございました。


スキルアップ/キャリアアップ(JOB@IT)