0
大きなテーブルの新しいIDを生成しようとしています。 IDはであり、であり、は0で始まる必要があります(シーケンスは使用できません)。私は今のところ思い付くことは、次の関数である:私は本当にとにかくidを気にしないので、PostgreSQLクエリの最適化
CREATE OR REPLACE FUNCTION genIds() RETURNS integer AS $$
DECLARE
edge RECORD;
i INTEGER := 0;
BEGIN
FOR edge IN SELECT * FROM network LOOP
UPDATE network SET id = i WHERE id = edge.id;
i := i + 1;
END LOOP;
RETURN i;
END;
$$ LANGUAGE plpgsql;
私はむしろについてIDを気にしないしたい=をedge.id。カウント(ネットワーク)の更新を避ける方法はありますか?
乾杯、ダニエル
Btw:あなたはシーケンスを '0'で始めることができます: 'シーケンスを作成するfoo_seq 0 minvalue 0で始める ' –
シーケンスはギャップレスであることが保証されているとは思いませんか? –
彼らは正しいわけではありません(あなたは0で始めることができないので、あなたはそれらを使いたくないと思っていました)。 –