oracleでシーケンス値を再設定してみる。
テーブルをリネーム
//まずは、テーブルをリネーム
ALTER TABLE TEST_TABLE01 RENAME TO TEMP_TEST_TABLE01;
//次にインデックスをリネーム
ALTER INDEX TEST_TABLE01_PKEY RENAME TO TEMP_TEST_TABLE01_PKEY;
// シーケンス番号を事前に取得
SELECT TESTTABLE_SEQ01.NEXTVAL FROM dual; //NEXTVALで値を1つ進めて取得
SELECT TESTTABLE_SEQ01.CURRVAL FROM dial; //currvalで現在値を取得
//シーケンスリネーム
ALTER SEQUENCE TESTTABLE_SEQ01 RENAME TO TEMP_TESTTABLE_SEQ01;
nextvalで1つ値を進めてから取得するのは、
いきなりcurrvalで値を取得しようとすると、エラーになるからです。
CURRVALというコマンドは、同じセッション内で最後に取得された数値を返すからです。
評価、自分がNEXTVALコマンド
で取得した値が1000だとして、同時に
他のセッション誰かがいないNEXTVALで1001を取得していたら、
もう一度自分がNEXTVALをした時には1002が戻ってきます。
簡単ではありますが、ここに残しておきます。
いきなりcurrvalで値を取得しようとすると、エラーになるからです。
CURRVALというコマンドは、同じセッション内で最後に取得された数値を返すからです。
評価、自分がNEXTVALコマンド
で取得した値が1000だとして、同時に
他のセッション誰かがいないNEXTVALで1001を取得していたら、
もう一度自分がNEXTVALをした時には1002が戻ってきます。
簡単ではありますが、ここに残しておきます。