Ustaw wartość domyślną podczas dodawania nowej kolumny:
create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');
Zmiana wartości domyślnej dla istniejących kolumn nie zmienia istniejących danych, ponieważ baza danych nie ma możliwości sprawdzenia, które wartości powinny zostać zmienione; nie ma flagi „ta kolumna ma wartość domyślną” na wartościach kolumn, jest tylko wartość domyślna (pierwotnie NULL, ponieważ nie określiłeś niczego innego) i bieżąca wartość (również NULL), ale sposób na odróżnienie „NULL ponieważ jest to wartość domyślna" i "NULL, ponieważ została jawnie ustawiona na NULL". Tak więc, jeśli zrobisz to w dwóch krokach:
- Dodaj kolumnę.
- Zmień wartość domyślną.
PostgreSQL nie zastosuje wartości domyślnej do właśnie dodanej kolumny. Jeśli jednak dodasz kolumnę i jednocześnie podasz wartość domyślną, PostgreSQL będzie wiedział, które wiersze mają wartość domyślną (wszystkie), więc może dostarczyć wartości w miarę dodawania kolumny.
Nawiasem mówiąc, prawdopodobnie chcesz mieć wartość NOT NULL w tej kolumnie:
create sequence rid_seq;
alter table test add column rid integer not null default nextval('rid_seq');
I, jak a_horse_with_no_name
uwagi, jeśli zamierzasz używać tylko rid_seq
dla twojego test.rid
kolumnę, możesz ustawić jej kolumnę właściciela
do test.rid
tak, że sekwencja zostanie usunięta, jeśli kolumna zostanie usunięta:
alter sequence rid_seq owned by test.rid;