- - PR -
SqlTransactionでINSERTしたデータの更新が出来ない
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-16 19:58
>おそらくそのSELECT文もトランザクションに含めるようにすればOKってことだと思います。
おっしゃる通り、SELECT文トランザクションに含めたら、エラーは出なくなりました! ありがとうございました。 でもみなさんの意見を聞いていると、どうも毎回SqlCommandのインスタンス生成しているところが、やばそうな感じがしますね。(この時点で、一連のトランザクション処理になっていないのでしょうか?) 私の作成しているトランザクション処理は、いくつものメソッドに分かれていて、 引数でSqlConnectionとSqlTransactionを渡していて、SqlCommandは各メソッド内でインスタンスを生成しています。 SqlCommandも引数として渡さないとだめでしょうか? それとも、根本的に間違っていて、もっと真っ当な方法があるのでしょうか? ご教授よろしくお願いします。 | ||||
|
投稿日時: 2004-11-16 21:41
それより、どうして"UPDATE 配番テーブル SET NO = NO + 1 WHERE ID=1"なの?シーケンスを使えば、トランザクションや同時実行や、考えなくてもすむやん。
#いや、IDがいくつもあって、不特定多数のシーケンスが必要 #ってことなら、わかるんですけどね。 _________________ | ||||
|
投稿日時: 2004-11-17 10:35
DBアクセス関連を一つのクラスにし、そのインスタンスをメソッドの引数やプロパティで使用するのも手かと @IT:複数のメソッドにまたがったトランザクション処理についてとか会議室 ディレクトリ>データベース>を探ってみては如何でしょう。 | ||||
|
投稿日時: 2004-11-17 18:48
burton999様 えんぞ@見習様 なちゃ様 Jitta様
貴重なご意見&ご指導ありがとうございました。 資料をもとにもう少し勉強します。 今後ともよろしくお願いします。 | ||||
|
投稿日時: 2004-11-17 21:29
Books Onlineを見ると、「シーケンス列」というのがありますね。説明を見る限り、INSERTすると自動的に採番(配番)されるみたいです。まぁ、どうやって「今割り当てられた番号を知るか」という問題がありますけど。
_________________ | ||||
|
投稿日時: 2004-11-18 09:25
Jitta様の書き込み(2004-11-16 21:41)より
>#いや、IDがいくつもあって、不特定多数のシーケンスが必要 >#ってことなら、わかるんですけどね。 今回の配番処理は「IDがいくつもあって、不特定多数のシーケンスが必要」なケースでした。 サンプルソースを省略してしまい、問題点が分りづらかったことを お詫び致します。 Jitta様の書き込み(2004-11-17 21:29)より >Books Onlineを見ると、「シーケンス列」というのがありますね。説明を見る限り、>INSERTすると自動的に採番(配番)されるみたいです。まぁ、どうやって「今割り当て>られた番号を知るか」という問題がありますけど。 今後、自動配番処理が必要なケースが生じましたら参考にさせていただきます。 ご指導ありがとうございました。 |