- ベストアンサー
カーソルでのデータ取得
いつもお世話になっております。 カーソルをオープンしたあとに(閉じる前に)、 カーソルのデータ取得元テーブルのデータが変化しても問題ありませんよね? ロジック的には。。。 OPEN カーソル カーソルデータ取得元テーブルのトランケート カーソルデータを1件ずつ編集し、データ取得元テーブルにINSERT CLOSE カーソル って感じなんですが。 キー重複などの関係で、一度テーブルを初期化した後に、もともとそのテーブルから取得したデータを編集し、INSERTしたいんです。 カーソルはOPENした時点の値を持ち続けるんですよね? 質問がわかりにくくてすみません
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>カーソルはOPENした時点の値を持ち続けるんですよね? コミット/ロールバックまでのトランザクションの間、持ち続けるという理解で 間違いはありませんが・・・ トランザクション中で行える操作が限られます。 DDL関係の操作はトランザクション中に投げると、トランザクションが強制的に コミットされるか、DDL関係の操作が弾かれます。 >キー重複などの関係で、一度テーブルを初期化した後に、 データの洗い替えのような処理では、処理手順の問題で、そのような問題が 起こる可能性もありますが、初期化等の手順を踏まなくても、処理の対象や 処理する順番をよく考えることで、キー重複は抑制できるはずです。 また、それが更新量を最低限に抑えることにもつながるはずです。 (処理順の整理が難しいとは思いますが・・) どうしても、初期化の手順が必要であるなら・・ 一時保存用のテーブルを用意した上で、それを経由して初期化&再登録の考え方を 取る方が危険が少ないと思いますよ。(特にデータ量が多い場合は・・)
その他の回答 (1)
- ooooooooooooo
- ベストアンサー率25% (94/367)
トランザクション、読み取り一貫性、を少し参照された方が良いと思います。 暗黙のトランザクション制御により‘はい’です。