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

Tworzenie sekwencji PostgreSQL do pola (które nie jest identyfikatorem rekordu)

Użyj CREATE SEQUENCE :

CREATE SEQUENCE scores_job_id_seq;  -- = default name for plain a serial

Następnie dodaj domyślną kolumnę do scores.job_id :

ALTER TABLE scores ALTER COLUMN job_id SET DEFAULT nextval('scores_job_id_seq');

Jeśli chcesz powiązać sekwencję do kolumny (aby usunąć ją, gdy kolumna zostanie usunięta), uruchom także:

ALTER SEQUENCE scores_job_id_seq OWNED BY scores.job_id;

Wszystko to można zastąpić użyciem pseudotypu danych serial dla kolumny job_id na początek:

  • Bezpiecznie i czysto zmieniaj nazwy tabel używających kolumn szeregowych kluczy podstawowych w Postgresie?

Jeśli Twoja tabela ma już wiersze, możesz ustawić SEQUENCE do następnej najwyższej wartości i uzupełnij brakujące wartości seryjne w tabeli:

SELECT setval('scores_job_id_seq', COALESCE(max(job_id), 1)) FROM scores;

Opcjonalnie:

UPDATE scores
SET    job_id = nextval('scores_job_id_seq')
WHERE  job_id IS NULL;
  • Jak skutecznie sprawdzić sekwencję pod kątem używanych i nieużywanych wartości w PostgreSQL
  • Postgres ręcznie zmienia sekwencję
  • Jak zresetować podstawową sekwencję klawiszy Postgresa, gdy nie będzie ona zsynchronizowana?

Jedyna pozostała różnica, serial kolumna jest również ustawiona na NOT NULL . Możesz też tego chcieć lub nie:

ALTER TABLE scores ALTER COLUMN job_id SET NOT NULL;

Ale nie możesz po prostu zmień typ istniejącej integer :

ALTER TABLE scores ALTER job_id TYPE serial;

serial nie jest rzeczywistym typem danych. To tylko notacyjna, wygodna funkcja dla CREATE TABLE .
W Postgresie 10 lub nowszym rozważ IDENTITY kolumna:

  • Automatyczna inkrementacja kolumny tabeli


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmapować tablicę PostgreSQL za pomocą Hibernate?

  2. Rails:Instalacja PG gem na OS X - nie udało się zbudować natywnego rozszerzenia

  3. HikariCP Postgresql Driver twierdzi, że nie akceptuje adresu URL JDBC

  4. Jak wyświetlić kod CREATE VIEW dla widoku w PostgreSQL?

  5. Alternatywy PGTune — konfiguracja ClusterControl PostgreSQL