PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy możesz utworzyć sekwencję na kolumnie, która już istnieje w Postgresie?

Cóż, musisz najpierw utworzyć sekwencję, której chcesz użyć dla wartości domyślnej:

create sequence linelevelpmts_seq_seq;
ALTER TABLE public.linelevelpmts 
    ALTER COLUMN seq SET DEFAULT nextval('linelevelpmts_seq_seq'::regclass);

Jeśli chcesz uzyskać taki sam efekt, jak gdyby został utworzony jako serial musisz także zmienić „właściciela” sekwencji:

alter sequence linelevelpmts_seq_seq owned by linelevelpmts.seq;

Edytuj

Komentarz Igora jest dobry:jeśli masz już wartości w kolumnie seq powinieneś dostosować początkową wartość sekwencji:

select setval('linelevelpmts_seq_seq', (select max(seq) from linelevelpmts));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wywołania funkcji agregujących postgres nie mogą być zagnieżdżone

  2. Jak usunąć ustaloną liczbę wierszy z sortowaniem w PostgreSQL?

  3. Jak ustawić strefę czasową dla Postgres 9.4 na stałe?

  4. Jak zsumować wartość w tablicy JSONB w Postgresql?

  5. Pozbądź się podwójnych cudzysłowów dzięki SQLalchemy dla PostgreSQL