限定しりとり

オラクルの連番(シーケンス)の振り方について一つお聞きしたい事がございます。

Insert時にシーケンスを使い、0から100まで順に連番を振りたいの
ですが、100に到達する前に、あるタイミングで現在値を0に戻して
再び1から連番を振りたいんです。

ちなみにあるタイミングを、下記に簡単に例として書きます。
(1)ファイルから1レコードずつデータを読み込む。
 (1)初回は何もチェックせずInsertをし、先頭から4バイトまでの値を変数に格納
 (2)2レコード目以降は、先頭から4バイトまでの値を前回の値(変数)と比較
  True(値が同じ)  ⇒順番に連番を振る

  False(値が違う)  ⇒新たに0から連番を振る。
             変わった値を変数に格納する。
(2)Insertをする。

私の知っている知識で行けば、シーケンスは1テーブルで一つのシーケンス
しか使用できなかったはずですが・・・なにぶん知識がないので、もしか
したら出来たのかな?と思ったので質問しました。
上に書いた事が可能であるかどうか教えてください。

よろしくお願いします。

A 回答 (2件)

Oracleのマニュアルを見ると、新しい番号で始めたい


場合はdrop & createしなさい、と書いてあります。

それができないなら、次の方法でできるかも???
(全く自信なし)

alter sequence シーケンス名 increment by (101 - 現在の値);

select シーケンス名.nextval from dual;

alter sequence シーケンス名 increment by 1;

これらは同一トランザクションで行ってください。


これでできなかったら、あきらめてdrop & create するか、
もしくは番号を管理するテーブルを別に作って、
自分で番号を管理するしかないでしょう。
    • good
    • 0
この回答へのお礼

御礼が遅くなりまして大変すいません。

Drop&Createが「出来る!」という人と、「出来ない」と言う人がいて、
どっちなんだろう?と思いつつ、オラクルがまだ手元に無いため検証も
出来ず、ただ「どっち??」という感じです。

オラクルが手に入りましたら、試してみたいと思います。
どうもありがとうございました。

お礼日時:2002/07/26 22:00

最近は、Oracleを触っていませんので単なる思い付きです。


的外れでしたらごめんなさい。

Drop Sequece ?
Create Sequence ?

のようなことはできませんでしたっけ。
また、できたとしても不都合があるのでしょか?
    • good
    • 0
この回答へのお礼

どうもありがとうございます。

それは私も考えたのですが、このやり方はNGみたいです。

お礼日時:2002/07/22 15:22

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

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