TGViewer
SQL Ready | Базы Данных SQL Ready | Базы Данных @sql_ready · 17.6K subscribers
Post #761 3.73K
ON CONFLICT DO NOTHING — апсерты без ошибок!

Когда вы вставляете данные в таблицу с уникальными ограничениями, может прилететь ошибка: дубликат ключа нарушает уникальность. Особенно обидно, если часть данных уже вставлена, а часть — нет.

Чтобы обойти это — используем ON CONFLICT DO NOTHING. Он просто пропустит строки, которые уже есть.

Допустим, у нас есть таблица с пользователями, где email должен быть уникальным:
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email TEXT UNIQUE
);


Попробуем вставить сразу несколько строк, включая дубликат:
INSERT INTO users (email)
VALUES ('alice@example.com'),
('bob@example.com'),
('alice@example.com'); -- дубликат!


Результат будет неудачным — Postgres выдаст ошибку и отменит всю операцию. Однако с ON CONFLICT всё работает иначе:
INSERT INTO users (email)
VALUES ('alice@example.com'),
('bob@example.com'),
('alice@example.com')
ON CONFLICT DO NOTHING;


🔥 Теперь база данных вставит только уникальные строки, а повторяющиеся — просто пропустит без лишнего шума.

➡️ SQL Ready | #практика
  • ❤ 11
  • 👍 9
  • 🔥 6
More from @sql_ready
  1. Oct 16, 2026Почему перенос условия из ON в WHERE меняет семантику LEFT JOIN При использовании LEFT JOI…
  2. Oct 16, 2026⚡️ В сети начали массово сливать IT-курсы и книги известных онлайн школ Вот отсортированна…
  3. Oct 16, 2026👍 Интересная статья лежит на Хабре: «За пределами EXPLAIN: как увидеть выполнение запроса…
  4. Oct 15, 2026Переносите строки без промежуточной выборки! Обычно архивирование делают в два этапа: снач…
  5. Oct 15, 2026Требуются 7 человек, чтобы помогали собирать чат-ботов для бизнеса по блокам, как лего. Ст…
  6. Oct 15, 2026📂 Шпаргалка по Eventual Consistency в распределённых системах! Например, Event-Driven обе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →