sql >> データベース >  >> RDS >> Oracle

テーブルから最大値で始まるOracleシーケンスを作成するにはどうすればよいですか?

    PL / SQLを使用できる場合は、試してみてください(編集:Neilのxlntの提案を組み込んで、次に高い値から開始します):

    SELECT 'CREATE SEQUENCE transaction_sequence MINVALUE 0 START WITH '||MAX(trans_seq_no)+1||' INCREMENT BY 1 CACHE 20'
      INTO v_sql
      FROM transaction_log;
    
    EXECUTE IMMEDIATE v_sql;
    

    考慮すべきもう1つのポイント:CACHEパラメーターを20に設定すると、データベースがダウンした場合にシーケンス内の最大19個の値が失われるリスクがあります。 CACHEd値は、データベースの再起動時に失われます。シーケンスを頻繁にヒットする場合、またはギャップをそれほど気にしない場合を除いて、1に設定します。

    最後に、CACHEとINCREMENTBYに指定した値がデフォルトです。それらを省略して同じ結果を得ることができます。



    1. Postgresql更新時の現在のタイムスタンプ

    2. JDBCを使用してOracleデータベースに接続するためのURL文字列形式

    3. oraclesqlスクリプトスプールファイルの作成方法

    4. LinuxでSQLServer認証データベースを使用してSolarWindsServ-Uを使用する