Задайте стойността по подразбиране, когато добавяте новата колона:
create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');
Промяната на стойността по подразбиране за съществуващи колони не променя съществуващите данни, тъй като базата данни няма начин да знае кои стойности трябва да бъдат променени; няма флаг „тази колона има стойността по подразбиране“ върху стойностите на колоната, има само стойността по подразбиране (първоначално NULL, тъй като не сте посочили нищо друго) и текущата стойност (също NULL), но начин да разберете разликата между „NULL тъй като е по подразбиране" и „NULL, защото изрично е зададено на NULL". И така, когато го направите в две стъпки:
- Добавяне на колона.
- Промяна на стойността по подразбиране.
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;