CREATE TABLE users (
id BIGINT GENERATED ALWAYS ASIDENTITYPRIMARY KEY,
email TEXT NOT NULLUNIQUE,
name TEXT NOT NULL,
city TEXT NOT NULL,
created_at TIMESTAMPTZ NOT NULLDEFAULT NOW()
);
CREATE TABLE orders (
id BIGINT GENERATED ALWAYS ASIDENTITYPRIMARY KEY,
user_id BIGINTNOT NULLREFERENCES users(id),
status TEXT NOT NULLCHECK (status IN ('pending', 'completed', 'cancelled')),
amount NUMERIC(12, 2) NOT NULLCHECK (amount >=0),
created_at TIMESTAMPTZ NOT NULLDEFAULT NOW()
);
CREATE INDEX idx_orders_user_created ON orders (user_id, created_at DESC);
Итог
SERIAL/BIGSERIAL — на основе последовательности (устаревший стиль) — `GENERATED...