パソいろ トップ > PostgreSQLでカラムにシーケンスを付ける

PostgreSQLでカラムにシーケンスを付ける

postgreSQLのテーブルにidカラムとか付けてない時に、途中からシーケンスを足す方法。

この例ではidカラムのなかったlogテーブルに529から採番。

まずはidカラムを追加。
それからシーケンスを作成。
そしてテーブルにシーケンスを付加。

ALTER TABLE log ADD COLUMN id integer;
CREATE SEQUENCE log_id_seq START 529;
ALTER TABLE log ALTER COLUMN id SET DEFAULT nextval('log_id_seq');

GRANT USAGE ON SEQUENCE log_id_seq TO 所有者;
LINUXでは上記のように権限設定しないと、permissionでinsertがはじかれる。

※この例だと、これ以前のrowsのidが空なのと、idカラムにnot null制約等がつかないので注意。
できればこれらの作業前に、idカラムを1から採番するとよい。
何らかの条件でテーブルをソートし、1から採番する方法はネットで見つかる。





関連 2024-02-12 21:52:35