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

Автоматично увеличаване на колоната на таблицата

Postgres 10 или по-нова версия

serial колони (вижте по-долу) остават непроменени. Но помислете за IDENTITY колона. Postgres 10 реализира тази стандартна функция на SQL.

Основен синтаксис и информация в ръководството за CREATE TABLE .
Подробно обяснение в този блог запис на основния му автор Питър Айзентраут.

Създаване таблица с IDENTITY колона

CREATE TABLE staff (
   staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY
 , staff    text NOT NULL
);

Добавяне IDENTITY колона към съществуваща таблица

Таблицата може или не може да бъде попълнена с редове.

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY;

За да го направите едновременно PK (таблицата все още не може да има PK):

ALTER TABLE staff ADD COLUMN staff_id int GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY;

Свързано:

  • Как да добавя колона за идентичност на PostgreSQL 10 към съществуваща таблица с редове?

Замяна serial с IDENTITY колона

Вижте:

  • Как да промените идентификатора на таблица от сериен на идентичен?

Postgres 9.6 или по-стара версия

(Или каквато и да е версия наистина.)
Използвайте serial вместо това псевдо тип данни:

CREATE TABLE staff (
   staff_id serial PRIMARY KEY,
 , staff    text NOT NULL
);

Той създава и прикачва обекта на последователността автоматично и задава DEFAULT към nextval() от последователността. Той прави всичко, от което се нуждаете.

Използвах идентификатори с малки букви в моя пример. Улеснява живота ви с Postgres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL синтактичен термин за 'WHERE (col1, col2) <(val1, val2)'

  2. Как да използвам Postgres JSONB тип данни с JPA?

  3. Получаване на неизвестен първичен ключ за таблица, докато идентификаторът е там

  4. Има ли опции за таблица за присъединяване за асоциации много към много?

  5. Лош дизайн ли е да се използват масиви в база данни?