新しい列を追加するときにデフォルト値を設定します:
create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');
データベースにはどの値を変更する必要があるかを知る方法がないため、既存の列のデフォルト値を変更しても、既存のデータは変更されません。列の値に「この列にはデフォルト値があります」フラグはありません。デフォルト値(他に何も指定しなかったため、元々はNULL)と現在の値(これもNULL)がありますが、「NULL」の違いを区別する方法があります。デフォルトであるため」および「明示的にNULLに設定されているためNULL」。したがって、2つのステップでそれを行う場合:
- 列を追加します。
- デフォルト値を変更します。
PostgreSQLは、追加した列にデフォルト値を適用しません。ただし、列を追加すると同時にデフォルト値を指定すると、PostgreSQLはどの行がデフォルト値(すべて)であるかを認識しているため、列が追加されたときに値を指定できます。
ちなみに、おそらくその列にもNOT NULLが必要です:
create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');
そして、a_horse_with_no_name
として rid_seq
のみを使用する場合は注意してください test.rid
用 列の場合は、所有者列を設定
することをお勧めします。 test.rid
へ 列が削除された場合にシーケンスが削除されるように:
alter sequence rid_seq owned by test.rid;