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 で増分番号を生成する方法はありますか?