PostgreSQL UPSERT: INSERT … ON CONFLICT DO UPDATE для идемпотентной записи

Классический пример UPSERT помогает избежать ошибки «duplicate key» в конкурентной среде. Если sku уже существует, строка обновляется — запрос остаётся идемпотентным и подходит для повторной отправки из сервисов/воркеров без риска дублирования.
-- Таблица с уникальным SKU
CREATE TABLE IF NOT EXISTS products (
  id          SERIAL PRIMARY KEY,
  sku         TEXT UNIQUE,
  name        TEXT NOT NULL,
  price_cents INTEGER NOT NULL,
  updated_at  TIMESTAMP DEFAULT NOW()
);

-- Безболезненно создаём или обновляем запись
INSERT INTO products (sku, name, price_cents)
VALUES ('SKU-001', 'Samurai Katana', 19999)
ON CONFLICT (sku) DO UPDATE
SET name        = EXCLUDED.name,
    price_cents = EXCLUDED.price_cents,
    updated_at  = NOW();