0

ID のリストを取得し、最初のセットとは関係のない新しい ID のセットを作成できるストアド プロシージャを Ingres で作成する必要があります (ただし、各ペアを保存する場所)。

私の最初の計画は、random() でソートし、シーケンスを使用して各行に 100000 から単純に番号を付け、これらの結果をテーブルに保存することでした。これはほとんど機能します。ただし、ALTER SEQUENCE はストアド プロシージャ内で使用できないため、新しい ID が常に 100000 から始まることを保証する方法がありません。

CREATE PROCEDURE create_external_dataset (datasetid varchar(12) NOT NULL) AS
BEGIN
    INSERT INTO external_sids
    SELECT :datasetid, NEXT VALUE FOR random_order_rank, sid
    FROM id_table
    ORDER BY random()
    FETCH FIRST 300000 ROWS ONLY;
END;
ALTER SEQUENCE random_order_rank RESTART WITH 100000;
EXECUTE PROCEDURE create_external_dataset('LTF-5463');

ストアド プロシージャ内からシーケンスをリセットする方法、またはシーケンスのストアド プロシージャのみのインスタンスを作成する方法はありますか?

それができない場合、シーケンスを使用しない Ingres で増分番号を生成する方法はありますか?

4

1 に答える 1