SQLLab
Глоссарий/PRIMARY KEY
DDL / СхемаНачальный

PRIMARY KEY

Уникальный идентификатор строки. Автоматически создаёт уникальный индекс, не допускает NULL.

Синтаксис
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
-- или
PRIMARY KEY (col1, col2)  -- составной

Объяснение

PRIMARY KEY = UNIQUE + NOT NULL + автоматический индекс. На таблицу — только один. Рекомендации для PostgreSQL: - BIGINT GENERATED ALWAYS AS IDENTITY — современный стандарт - UUID — если нужна глобальная уникальность, но медленнее из-за случайности (UUID v7 лучше) - Суррогатный ключ (id) лучше натурального (email) — email может измениться

Пример

-- Современный вариант
CREATE TABLE products (
  id    BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  name  TEXT NOT NULL
);

-- Составной ПК
CREATE TABLE order_items (
  order_id   BIGINT REFERENCES orders(id),
  product_id BIGINT REFERENCES products(id),
  PRIMARY KEY (order_id, product_id)
);