Что такое UPSERT в PostgreSQL?

Middle
624 просмотров
AFK Offer AI

UPSERT — INSERT, который при конфликте уникального ключа делает UPDATE вместо ошибки. В PostgreSQL: INSERT INTO users (email, name) VALUES ('a@b.com', 'Alice') ON CONFLICT (email) DO UPDATE SET name = EXCLUDED.name. EXCLUDED — специальная таблица со значениями, которые пытались вставить. ON CONFLICT можно по индексу или constraint. DO NOTHING — просто пропустить дубликат. Атомарная операция — нет race condition между "проверить и вставить". В Go с pgx: обычный Exec с этим SQL.

Следующий вопрос

Как работать с timezone?