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から採番する方法はネットで見つかる。
この例では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