プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。

カーソルをオープンしたあとに(閉じる前に)、
カーソルのデータ取得元テーブルのデータが変化しても問題ありませんよね?
ロジック的には。。。
OPEN カーソル
カーソルデータ取得元テーブルのトランケート
カーソルデータを1件ずつ編集し、データ取得元テーブルにINSERT
CLOSE カーソル
って感じなんですが。
キー重複などの関係で、一度テーブルを初期化した後に、もともとそのテーブルから取得したデータを編集し、INSERTしたいんです。
カーソルはOPENした時点の値を持ち続けるんですよね?
質問がわかりにくくてすみません

A 回答 (2件)

>カーソルはOPENした時点の値を持ち続けるんですよね?



コミット/ロールバックまでのトランザクションの間、持ち続けるという理解で
間違いはありませんが・・・

トランザクション中で行える操作が限られます。
DDL関係の操作はトランザクション中に投げると、トランザクションが強制的に
コミットされるか、DDL関係の操作が弾かれます。

>キー重複などの関係で、一度テーブルを初期化した後に、

データの洗い替えのような処理では、処理手順の問題で、そのような問題が
起こる可能性もありますが、初期化等の手順を踏まなくても、処理の対象や
処理する順番をよく考えることで、キー重複は抑制できるはずです。
また、それが更新量を最低限に抑えることにもつながるはずです。
(処理順の整理が難しいとは思いますが・・)

どうしても、初期化の手順が必要であるなら・・
一時保存用のテーブルを用意した上で、それを経由して初期化&再登録の考え方を
取る方が危険が少ないと思いますよ。(特にデータ量が多い場合は・・)
    • good
    • 0

 トランザクション、読み取り一貫性、を少し参照された方が良いと思います。


 暗黙のトランザクション制御により‘はい’です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す