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

oracleのシーケンスでdual表からselect文のnextvalで取得したものをインサート
したいのですが、ループ内で上記処理を複数回行ったときに、値が一回目以降
更新されずに困っています。

例)
for (i=0;i < 5){
(1)セレクト文発行しシーケンスを取得。
(2)取得したシーケンスを変数にセット
(3)インサート実行(主キーに取得したシーケンスをセット)
}
こんな感じで実行したときに、はじめはシーケンスが+1されますが、
それ以降シーケンスが増加しません。そのため、重複エラーが発生してしまいます。。。
どのように対処したらよいのかまったく見当がつきません。
大変申し訳ないのですが、ご教示いただきたくよろしくお願い申し上げます。

A 回答 (1件)

例の疑似コードでは別に問題点が見つかりませんので、


実際のコード中のどこかにバグがあるんだと思います。
『(1)で取得した値が+1されているかどうか』を第1歩として
コードレベルの誤りを探すしかないです。

おそらく(1)の時点では+1した値が取れているのに、(2)~
(3)の処理に問題があってデータが更新されていないので
はないかと推測します。
    • good
    • 0

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

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