PRIMARY KEY
Уникальный идентификатор строки. Автоматически создаёт уникальный индекс, не допускает NULL.
id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
-- или
PRIMARY KEY (col1, col2) -- составнойОбъяснение
Пример
-- Современный вариант
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)
);Связанные термины
Анекдоты по теме
— Нужно ли использовать SERIAL или IDENTITY для первичного ключа? — SERIAL — это старый синтаксис через sequence. IDENTITY (SQL стандарт, PostgreSQL 10+) — современный. — Какой выбрать? — GENERATED ALWAYS AS IDENTITY. Не позволяет случайно вставить своё значение.
— Чем TRUNCATE отличается от DELETE? — DELETE логирует каждую строку и может быть в транзакции. — TRUNCATE удаляет всё разом, не логируя строки. Быстрее. — Но TRUNCATE нельзя откатить? — В PostgreSQL можно — TRUNCATE транзакционный. — В MySQL? — Там TRUNCATE автоматически фиксирует транзакцию. Осторожно.
— Что такое SQL тремя словами? — Спроси у таблицы. — А если сложнее? — Дай мне данные. — А если ещё сложнее? — Соедини эти две таблицы аккуратно.