Установка значения по умолчанию при добавлении нового столбца:
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;