我需要在 Ingres 中生成一个存储过程,该过程能够获取一个 ID 列表并生成一组与第一组无关的新 ID(但我们存储每一对的位置)。
我最初的计划是按 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 中产生增量数字?