PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Създаване на последователност върху съществуваща таблица

Задайте стойността по подразбиране, когато добавяте новата колона:

create sequence rid_seq;
alter table test add column rid integer default nextval('rid_seq');

Промяната на стойността по подразбиране за съществуващи колони не променя съществуващите данни, тъй като базата данни няма начин да знае кои стойности трябва да бъдат променени; няма флаг „тази колона има стойността по подразбиране“ върху стойностите на колоната, има само стойността по подразбиране (първоначално NULL, тъй като не сте посочили нищо друго) и текущата стойност (също NULL), но начин да разберете разликата между „NULL тъй като е по подразбиране" и „NULL, защото изрично е зададено на NULL". И така, когато го направите в две стъпки:

  1. Добавяне на колона.
  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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите представяне на ред на генерирана таблица?

  2. Функция COPY в PostgreSQL

  3. вмъкване на израз в postgre за тип данни timestamp без часова зона NOT NULL,

  4. Как Cosd() работи в PostgreSQL

  5. C# enum към postgres enum