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) );
Связанные термины
Анекдоты по теме
— А что такое BETWEEN? — «Дай мне всех, кому от 18 до 35 лет». Между 18 и 35 включительно.
— Почему NOT NULL — это как строгий родитель? — Потому что не даёт пропускать пустые места. «Ты заполнишь это поле, иначе я выдам ошибку!»
Начинающий: — А что будет, если в WHERE написать 1=1? Опытный: — База вернёт всё. Это как спросить «Дай всё, что существует». Полезно для тестов, опасно для работы.