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

Създаване на PostgreSQL последователност към поле (което не е ID на записа)

Използвайте CREATE SEQUENCE :

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

След това добавете колона по подразбиране към scores.job_id :

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

Ако искате да свържете последователността към колоната (така че се изтрива, когато колоната е изтрита), също изпълнете:

ALTER SEQUENCE scores_job_id_seq OWNED BY scores.job_id;

Всичко това може да бъде заменено с използване на псевдо тип данни serial за колоната job_id за начало:

  • Безопасно и чисто преименувате таблици, които използват колони от сериен първичен ключ в Postgres?

Ако вашата таблица вече има редове, може да искате да зададете SEQUENCE до следващата най-висока стойност и попълнете липсващите серийни стойности в таблицата:

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

По избор:

UPDATE scores
SET    job_id = nextval('scores_job_id_seq')
WHERE  job_id IS NULL;
  • Как да проверите ефективно последователност за използвани и неизползвани стойности в PostgreSQL
  • Postgres ръчно променя последователността
  • Как да нулирате последователността на първичния ключ на postgres, когато не е синхронизирана?

Единствената останала разлика е serial колоната също е настроена на NOT NULL . Може и да не искате това:

ALTER TABLE scores ALTER COLUMN job_id SET NOT NULL;

Но вие не можете просто променете типа на съществуващ integer :

ALTER TABLE scores ALTER job_id TYPE serial;

serial не е действителен тип данни. Това е просто удобна функция за нотации за CREATE TABLE .
В Postgres 10 или по-нова версия помислете за IDENTITY колона:

  • Колона на таблицата с автоматично увеличение


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

  2. Грешка при използване на съвпадение на шаблон, което не е като всички в PostgreSQL

  3. Механизми за физическа репликация в PostgreSQL

  4. Обединяване на резултати от две отделни бази данни

  5. Сравнителни показатели за PostgreSQL Meltdown